您的位置:首页 > 其它

lightOJ 1336 Sigma Function

2015-05-01 08:45 337 查看
题目链接:http://lightoj.com/volume_showproblem.php?problem=1336

题意::f(n)为n所有约数的和,给你一个数n,让你求从1到n中f(n)为偶数的数有多少个

思路:n=p1^e1*p2^e2...,则f(n)=(p1^(e1+1)-1)/(p1-1))*(p2^(e2+1)-1)/(p2-1))....

且(p1^(e1+1)-1)/(p1-1))=p1^0+p1^1......+p1^e1;

要使得f(n)为奇数,则(p1^(e1+1)-1)/(p1-1)到(pn^(en+1)-1)/(pn-1)都要为奇数;

1)当p=2时,2^(e+1)-1,一定为奇数;

2)当p!=2时,则p为奇数,则当e为偶数时(p^(e+1)-1)/(p-1)为奇数。

则需要统计1到n中的平方数个数和2倍的平方数的个数,得到的为1到n中f(n)为奇数的个数。

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