码迷,mamicode.com
首页 > 其他好文 > 详细

hdoj1215--七夕节(数学)

时间:2015-12-25 23:46:29      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:

七夕节

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 37249    Accepted Submission(s): 11625

Problem Description
七夕节那天,月老来到数字王国,他在城门上贴了一张告示,并且和数字王国的人们说:"你们想知道你们的另一半是谁吗?那就按照告示上的方法去找吧!" 人们纷纷来到告示前,都想知道谁才是自己的另一半.告示如下:
技术分享
数字N的因子就是所有比N小又能被N整除的所有正整数,如12的因子有1,2,3,4,6. 你想知道你的另一半吗?
 
Input
输入数据的第一行是一个数字T(1<=T<=500000),它表明测试数据的组数.然后是T组测试数据,每组测试数据只有一个数字N(1<=N<=500000).
 
Output
对于每组测试数据,请输出一个代表输入数据N的另一半的编号.
 
Sample Input
3 2 10 20
 
Sample Output
1 8 22
 
Author
Ignatius.L
 
Source
 
Recommend
Eddy   |   We have carefully selected several similar problems for you:  1286 1406 1211 1214 1164
 
#include <cstdio>
#include <cstring>
const int N = 500001;
int num[N];
void Init(){
     for(int i = 1; i < N; i++)
        num[i] = 1;
    
    for(int i = 2; i < N; i++)
        for(int j = i+i; j < N; j += i)
            num[j] += i;
    
}
void Sieve(){
    //memset(num, 1, sizeof(num));
    
    for(int i = 2; i < N; i++)
        for(int j = 2; i*j < N; j++)
            num[i*j] += j;
}
int main(){
    int T;
    //Sieve();
    Init(); 
    scanf("%d", &T);
    while(T--){
        int n;
        scanf("%d", &n);
        if(n == 1){
            printf("0\n");
            continue;
        }
        printf("%d\n", num[n]);
    }
    return 0;
}

 

 

hdoj1215--七夕节(数学)

标签:

原文地址:http://www.cnblogs.com/fengshun/p/5077234.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!