• lightoj 1336 Sigma Function


    题目大意:

      δ(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
    ", l++, n - t1 - t2);
    19     }
    20     return 0;
    21 }
    本文为博主原创文章,未经博主允许不得转载。
  • 相关阅读:
    BZOJ4569 : [Scoi2016]萌萌哒
    2016浙江省赛过山车记
    BZOJ4546(原) : 三元组
    BZOJ4539 : [Hnoi2016]树
    BZOJ4537 : [Hnoi2016]最小公倍数
    BZOJ4538 : [Hnoi2016]网络
    BZOJ4527 : K-D-Sequence
    BZOJ4504 : K个串
    BZOJ4471 : 随机数生成器Ⅱ
    BZOJ3659 : Which Dreamed It
  • 原文地址:https://www.cnblogs.com/alihenaixiao/p/4459793.html
Copyright © 2020-2023  润新知