• LightOJ1336


    题目大意:

      给你一个 n ,求出 1 到 n 中有多少个数的因数和为偶数。

    解题思路:

      可以先求出因数和为奇数的数字的个数。

      由算术基本定理我们可以得到:N=P1a1P2a2P3a3 … Pnan, σ(N) = (1+p1+p12+ … +p1a1)(1+p2+p22+ … +p2a2) … (1+pn+pn2+ … +pnan). 其中各个 p 均为素数。

      我们先考虑那些因数中没有 2 的数。由于 σ(N) 为奇数,那么对于式中相乘的各项应该都是奇数,一个显而易见的事实是:除了 2 以外其他的素数均为奇数。我们随意取出一项:(1+pi+pi2+ … +piai),不难发现一个结论:如果 ai 为偶数,那么这一项的和为奇数;否则为偶数。于是我们可以大胆地推测 σ(N) 中各个非2质因数的指数均为偶数,那么这些数均为平方数,我们只需去掉 1 到 n 中的所有平方数,即可去掉那些因数中没有 2 而且因数和为奇数的数。

      如果考虑因数中有 2 的数呢?其实只需在上面求出各个平方数时顺便再乘一下 2 即可。

    AC代码:

     1 #include<stdio.h>
     2 #include<math.h>
     3 typedef long long ll;
     4 int main(){
     5     int t;
     6     ll n;
     7     scanf("%d",&t);
     8     for(int j=1;j<=t;j++){
     9         scanf("%lld",&n);
    10         ll ans=n;
    11         for(ll i=1;i*i<=n;i++){
    12             ans--;
    13             if(2*i*i<=n) ans--;
    14         }
    15         printf("Case %d: %lld
    ",j,ans);
    16     }
    17     return 0;
    18 }
    “这些年我一直提醒自己一件事情,千万不要自己感动自己。大部分人看似的努力,不过是愚蠢导致的。什么熬夜看书到天亮,连续几天只睡几小时,多久没放假了,如果这些东西也值得夸耀,那么富士康流水线上任何一个人都比你努力多了。人难免天生有自怜的情绪,唯有时刻保持清醒,才能看清真正的价值在哪里。”
  • 相关阅读:
    信息安全系统设计基础第九周学习总结
    信息安全程序设计基础第五周学习总结
    信息安全程序设计基础第二周学习总结
    信息安全程序设计基础第三周总结
    ubuntu 13.10安装jdk 1.7 owen
    vim的配置文件 owen
    程序的思想是相通的,语言只是一种手段 owen
    如何删除开机系统选择 owen
    easybcd添加或删除启动选项 owen
    星际译王词库 owen
  • 原文地址:https://www.cnblogs.com/Blogggggg/p/7706525.html
Copyright © 2020-2023  润新知