hdu 1215

来源:互联网 发布:淘宝店铺购买可以吗 编辑:程序博客网 时间:2024/06/14 05:59
//  http://acm.hdu.edu.cn/showproblem.php?pid=1215//    这和以往的求因子之和的方法不同/*   这里的主要思想是把每个数字拆开  看函数二层循环     当j是二的倍数的时候,每个j都加上2(这个2就是他的因子),这样循环下去,就能把所有的因子之和求出来了    不会有超时的现象,时间复杂度是o(nlogn)*/#include<stdio.h>int ans[500001];void fun(){    int i,j;    for(i=1;i<=500000;i++)        ans[i]=1;    for(i=2;i<=250000;i++)    {        for(j=2*i;j<=500000;j+=i)            ans[j]+=i;    }}int main(){    int t,n;    fun();    while(scanf("%d",&t)!=EOF)    {        while(t--)        {        scanf("%d",&n);        printf("%d\n",ans[n]);        }    }    return 0;}


原创粉丝点击