zoukankan      html  css  js  c++  java
  • 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 }
    “这些年我一直提醒自己一件事情,千万不要自己感动自己。大部分人看似的努力,不过是愚蠢导致的。什么熬夜看书到天亮,连续几天只睡几小时,多久没放假了,如果这些东西也值得夸耀,那么富士康流水线上任何一个人都比你努力多了。人难免天生有自怜的情绪,唯有时刻保持清醒,才能看清真正的价值在哪里。”
  • 相关阅读:
    VUE图片懒加载-vue lazyload插件的简单使用
    vuejs+axios发送请求
    Vue2.0+Node.js+MongoDB全栈打造商城系统
    Vue基础知识之vue-resource和axios
    vue-resource
    css3 转换 过渡 及动画
    css sticky footer布局
    vue 前端生成二维码 (带图标)
    微信小程序学习四
    tradingview绘制K线周期切换保留指标
  • 原文地址:https://www.cnblogs.com/Blogggggg/p/7706525.html
Copyright © 2011-2022 走看看