HDUOJ 还是七夕节

 

还是七夕节

Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 396   Accepted Submission(s) : 62

Font: Times New Roman | Verdana | Georgia

Font Size:  

Problem Description

七夕节那天,月老来到数字王国,他在城门上贴了一张告示,并且和数字王国的人们说:"你们想知道你们的另一半是谁吗?那就按照告示上的方法去找吧!"
人们纷纷来到告示前,都想知道谁才是自己的另一半.告示如下:



数字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,则请输出“缘分已定”;
其他情况,则请输出“缘分未到”;

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 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include 
#include 
#include 
#include 
#include 
#include 
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;

}

 

你可能感兴趣的:(ACM_Water~)