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

lightoj 1336 Sigma Function

时间:2015-04-27 12:55:54      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:

题目大意:

  δ(n)表示n的所有因子的和,给一个数n,求[1,n]之间的数x,满足δ(x)是偶数的x有多少个。

解题思路:

  想来想去,没有思路,只感觉和2这个因子有关,看大家都做出来了,感觉题目不应该太难,于是打标看了看,发现只有2x,x2,2*x2的因子不是偶数,只需要算出来然后减去重复的就ok:

  2x/x2:可以换算出,当x是偶数的时候,两者重复。

  2x/2*x2:当x是奇数的时候,两者重复。

所以最后的结果就是n减去x2和2*x2的个数。

代码:

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<algorithm>
 5 #include<cmath>
 6 using namespace std;
 7 
 8 int main ()
 9 {
10     long long t, n, l = 1;
11     scanf ("%lld", &t);
12     while (t --)
13     {
14         scanf ("%lld", &n);
15         long long t1, t2;
16         t1 = (long long)sqrt(n);//x^2的个数
17         t2 = (long long)sqrt(n/2);//2*x^2的个数
18         printf ("Case %lld: %lld\n", l++, n - t1 - t2);
19     }
20     return 0;
21 }

 

lightoj 1336 Sigma Function

标签:

原文地址:http://www.cnblogs.com/alihenaixiao/p/4459793.html

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