题目大意:

  给你一个 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代码:

 #include<stdio.h>
#include<math.h>
typedef long long ll;
int main(){
int t;
ll n;
scanf("%d",&t);
for(int j=;j<=t;j++){
scanf("%lld",&n);
ll ans=n;
for(ll i=;i*i<=n;i++){
ans--;
if(*i*i<=n) ans--;
}
printf("Case %d: %lld\n",j,ans);
}
return ;
}

LightOJ1336的更多相关文章

  1. 【LightOJ1336】Sigma Function(数论)

    [LightOJ1336]Sigma Function(数论) 题面 Vjudge 求和运算是一种有趣的操作,它来源于古希腊字母σ,现在我们来求一个数字的所有因子之和.例如σ(24)=1+2+3+4+ ...

  2. LightOJ1336 Sigma Function —— 质因子分解、约数和为偶数

    题目链接:https://vjudge.net/problem/LightOJ-1336 1336 - Sigma Function    PDF (English) Statistics Forum ...

  3. LightOJ-1336 Sigma Function 唯一分解定理 巧妙使用sqrt()等算数目

    题目链接:https://cn.vjudge.net/problem/LightOJ-1336 题意 给出一个区间[1, n],求区间内所有数中因数之和为偶数的数目 思路 第二次写这个题 首先想到唯一 ...

  4. LightOJ1336 Sigma Function(约数和为偶数的个数)

    Sigma Function Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit ...

  5. lightoj1336数论基础

    #include<iostream> #include<cstdio> #include<cmath> #define ll long long using nam ...

  6. LightOJ1336 Sigma Function

    题意 求和运算是一种有趣的操作,它来源于古希腊字母σ,现在我们来求一个数字的所有因子之和.例如σ(24)=1+2+3+4+6+8+12+24=60.对于小的数字求和是非常的简单,但是对于大数字求和就比 ...

  7. lightoj1336 约数和

    /*sigma(n)的每一项都可以看成是个pi的[0,ei]等比数列求和公式,那么sigma(n)就是n所有正约数的和要求找到sigma(x)为奇数的个数1<=x<=n */ 看题解的.. ...

  8. LightOJ - 1336 - Sigma Function(质数分解)

    链接: https://vjudge.net/problem/LightOJ-1336 题意: Sigma function is an interesting function in Number ...

随机推荐

  1. Ubuntu+FastDFS+Nginx

    一.安装libfastcommon 1.wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz 2.tar - ...

  2. nginx经验分享

    如果我们在使用启动nginx时,遇到这样的提示: nginx: [alert] could not open error log file: open() "/usr/local/var/l ...

  3. ubuntu 和 centos 如何区分系统

    Ubuntu Ubuntu有着漂亮的用户界面,完善的包管理系统,强大的软件源支持,丰富的技术社区,Ubuntu还对大多数硬件有着良好的兼容性,包括最新的图形显卡等等.这一切让Ubuntu越来越向大众化 ...

  4. jQuery简单竖排手风琴折叠菜单代码

    项目需求1.刚开始只显示,每个标题, 2.让每个 li列表隔行换色 3.当我点击某个标题时,下面的列表会缓慢的展开,其他列表展开的内容会收起 <!DOCTYPE html> <htm ...

  5. P1191 矩形

    ------------恢复内容开始------------ 题意 给出一个\(n*n\)的矩阵,矩阵中,有些格子被染成白色,有些格子被染成黑色,现要求矩阵中白色矩形的数量 分割线 Ⅰ.暴力出奇迹!! ...

  6. dp D. Caesar's Legions

    https://codeforces.com/problemset/problem/118/D 这个题目有点思路,转移方程写错了. 这个题目看到数据范围之后发现很好dp, dp[i][j][k1][k ...

  7. F - Power Network POJ - 1459

    题目链接:https://vjudge.net/contest/299467#problem/F 这个是一个很简单的题目,但是读入很有意思,通过这个题目,我学会了一种新的读入方式. 一个旧的是(%d, ...

  8. kafka学习 之 简介

    文章目录 [Topics and Logs](http://kafka.apache.org/intro#intro_topics): Distribution: Producers: Consume ...

  9. 王颖奇 20171010129《面向对象程序设计(java)》第十五周学习总结

    实验十五  GUI编程练习与应用程序部署 实验时间 2018-12-6 学习总结: 理论部分: ◼ JAR文件◼ 应用程序首选项存储◼ Java Web Start JAR文件: 1.Java程序的打 ...

  10. [csu/coj 1078]多个序列的最长公共子序列

    题意:给n个序列,同一个序列里面元素互不相同,求它们的最长公共子序列. 思路:任取一个序列,对于这个序列里面的两个数ai,aj(i<j),如果对于其它每一个序列,都出现过ai,aj,且ai在aj ...