您的位置:首页 > 其它

HDOJ 1215 七夕节

2016-04-12 13:00 218 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1215

题目的意思就是求出一个数的除自己外的所有因数的和,为防止超时方法自然是用到预处理打表的方法,当然如果每次都求一个数n的所有因数,那也就是说我们每次就需要重复1~sqrt(n),这样打表肯定是会超时的,所以我们可以换个思路,与其求一个数的所有因数,不如求这个数是哪些数的因数,所以我门采取反向打表,来求解。

#include<stdio.h>
#include<string.h>
const int maxn = 500000+2;
int a[maxn];
int main()
{
int i, j, n, t;
for(i = 1; i < maxn; i++)
for(j = 1; i * j < maxn; j++)
a[i * j] += i;
scanf("%d", &t);
while(t--)
{
scanf("%d", &n);
printf("%d\n", a
- n);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: