HDUOJ 还是七夕节
还是七夕节
Time Limit : 2000/1000ms (Java/Other)Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 396Accepted Submission(s) : 62
Font:Times New Roman|Verdana|Georgia
Font Size:←→
Problem Description
七夕节那天,月老来到数字王国,他在城门上贴了一张告示,并且和数字王国的人们说:"你们想知道你们的另一半是谁吗?那就按照告示上的方法去找吧!"
人们纷纷来到告示前,都想知道谁才是自己的另一半.告示如下:

数字N的因子就是所有比N小又能被N整除的所有正整数,如12的因子有1,2,3,4,6.
你的缘分如何呢?
人们纷纷来到告示前,都想知道谁才是自己的另一半.告示如下:
数字N的因子就是所有比N小又能被N整除的所有正整数,如12的因子有1,2,3,4,6.
你的缘分如何呢?
Input
输入数据的第一行是一个数字T(1<=T<=500000),它表示测试数据的组数.然后是T组测试数据,每组测试数据只有一个数字N(1<=N<=500000).
Output
对于每组的测试数据N,可计算得到N的因子和M,假设M的因子和是K,则:
如果N==M 或者 M不在[1,500000]的范围之内,则请输出“注定单身”,
否则,如果 N==K,则请输出“缘分已定”;
其他情况,则请输出“缘分未到”;
如果N==M 或者 M不在[1,500000]的范围之内,则请输出“注定单身”,
否则,如果 N==K,则请输出“缘分已定”;
其他情况,则请输出“缘分未到”;
Sample Input
3 6 7 220
Sample Output
注定单身 缘分未到 缘分已定
【解题思路】先打张表,之后就是根据要求判断,读懂题意打表很重要
//============================================================================ // Name : 1009.cpp // Author : Weisi Shi // Version : // Copyright : Weisi Shi // Description : Hello World in C++, Ansi-style //============================================================================ #include <map> #include <set> #include <list> #include <queue> #include <stack> #include <bitset> #include <vector> #include <string> #include <algorithm> #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include <iomanip> using namespace std; #define max 500000 int a[max + 1] = { 0 }; int main() { //freopen("text.txt","r",stdin); int t, n, i, j; a[0] = a[1] = 0; for (i = 1; i <= max / 2; i++) for (j = i + i; j <= max; j += i) a[j] += i; scanf("%d", &t); while (t--) { scanf("%d", &n); if(n == a[n] || a[n]>max || a[n]<1){ printf("注定单身\n"); } else if(n == a[a[n]]){ printf("缘分已定\n"); } else{ printf("缘分未到\n"); } } return 0; }