常用的化简方法(高中就常用了):     p^(e+1)-1/p-1=             [ p^(e+1) -p + (p-1) ]/ (p-1) = p*(p^e-1)/(p-1) + 1   (也可以直接分解p^e-1)

常用的思路:反面验证  比如本题,求偶数(试探后发现不太好求),则推出奇数条件

再看本题。要想让σ(n)为偶数,只要有一项为偶数即可,

化简变为,观察这个式子,pi都是素数,除2以外都是奇数,所以式子奇偶决定于ei,若ei为奇数,就相当于奇数个奇数(若pi不是2,那么肯定是奇数)相加,再加上1,偶数,反之,若ei为偶数,就是奇数。如果pi刚好是2,是奇数

得出结论:对于n,若将n进行唯一分解之后,如果存在任何一个 pi != 2 且 ei ( 1 <= i <= k )为奇数则 σ(n) 为偶数。

现在需要求的是计算1-n之间能让σ(k)为偶数的k的个数。有些复杂,所以考虑这个问题的反面,求1-n之间能让σ(k)为奇数的k的个数

若σ(n)为奇数,则每一项都必须为奇数,意味着每一项约分之后的都必须为奇数,也就是说每一项的ei都必须是偶数,也就是说n必须为平方数。但是前面证明过当pi为2时,无论ei是什么,这一项都是奇数,然而这些平方数乘以2之后,其σ仍是奇数(如果再乘以2,就是另一个平方数了,所以只需要考虑乘一个2),仍然符合条件。

所以n为平方数,或为平方数的2倍,那么σ(n)为奇数。而小于n的平方数为sqrt(n)个,这些平方数的2倍的个数是sqrt(n/2)。

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
typedef long long ll;
int main()
{
int T;
scanf("%d", &T);
for(int kase = ; kase <= T; kase++)
{
ll n, sum;
scanf("%lld", &n);
sum = n;
sum -= (int)sqrt(n);
sum -= (int)sqrt(n/);
printf("Case %d: %lld\n", kase, sum);
}
return ;
}

light oj 1336 sigma function的更多相关文章

  1. 1336 - Sigma Function

    1336 - Sigma Function   PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB S ...

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

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

  3. LightOJ 1336 Sigma Function 算数基本定理

    题目大意:f(n)为n的因子和,给出 n 求 1~n 中f(n)为偶数的个数. 题目思路:算数基本定理: n=p1^e1*p2^e1 …… pn^en (p为素数): f(n)=(1+p1+p1^2+ ...

  4. LightOJ 1336 Sigma Function(数论 整数拆分推论)

    --->题意:给一个函数的定义,F(n)代表n的所有约数之和,并且给出了整数拆分公式以及F(n)的计算方法,对于一个给出的N让我们求1 - N之间有多少个数满足F(x)为偶数的情况,输出这个数. ...

  5. LightOJ - 1336 Sigma Function(约数和+整数拆分)

    题干中给出函数公式: 其中pi为n的每个素因数,ei为其个数.设该函数为F(x),其意义为x的约数之和.问在1-n中有多少x,令F(x)为偶数. 分析:设f(p)为(p^(e+1)-1)/(p-1). ...

  6. LightOJ 1336 - Sigma Function

    原题链接 基础数论中很经典的一道题 题意 给出了σ(n)的计算公式,让你找出整数1-n中有多少对应σ(n)的值是偶数. 思路 观察σ(n)的公式发现,每一个乘项都是 (piei+1 - 1) / (p ...

  7. LightOJ 13361336 - Sigma Function (找规律 + 唯一分解定理)

    http://lightoj.com/volume_showproblem.php?problem=1336 Sigma Function Time Limit:2000MS     Memory L ...

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

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

  9. 1336 - Sigma Functio

    1336 - Sigma Function Sigma function is an interesting function in Number Theory. It is denoted by t ...

随机推荐

  1. 2018.8.10Yukimai模拟Day1

    这的确是最惨的一次模拟了……不会再惨了(10pts除非爆零orz) 总结一下吧…… T1 .章鱼 众所周知,雪舞喵有许多猫.由于最近的天气十分炎热,雪舞城的大魔法师雪月月根本不想出门,只想宅在家里打隔 ...

  2. 什么是位、字节、字、KB、MB?

    1. 位(bit)是计算机里最小的数据单位,每一位的状态只能是0或者1 2. 字节(Byte)      1Byte = 8 bit      它是存储空间的基本计量单位,1byte可以存储一个英文字 ...

  3. sscanf非常的重要

    刚进研究生阶段,发现曾经学习的c语言真的好少好少,很少能够看见scanf printf等..... 以后实验的80%以上都是在linux下面 老师让我看看关于一个日志会聚的一个项目模块 发现基本上都是 ...

  4. Django View类的解析

    class View(object): """ Intentionally simple parent class for all views. Only impleme ...

  5. hdoj2859【DP基础】

    /* 看题解A的. 总结:小矩阵--> 大矩阵 dp[i][j]=min(t,dp[i-1][j+1]+1); */ #include <iostream> #include < ...

  6. python之请求报文对比(假定最多二维字典)

    两段请求报文,判断不一样的key和value,只判断d2里和d1不同的值,和全部不同的key ok_req={ "version": "9.0.0", &quo ...

  7. Educational Codeforces Round 24 D

    Alice and Bob got very bored during a long car trip so they decided to play a game. From the window ...

  8. JavaScript--数组常用方法总结

    JavaScript--数组常用方法总结 测试模板: var arr = ["a", "b", "c", "d", &q ...

  9. adb logcat教程

    1.速查 $adb logcat -g //打印和缓冲区使用情况 $adb logcat -c main //清除main缓存区 $adb logcat -v threadtime -f /data/ ...

  10. MySQL、SqlServer、Oracle三大主流数据库分页查询 (MySQL分页不能用top,因为不支持)

    一. MySQL 数据库 分页查询MySQL数据库实现分页比较简单,提供了 LIMIT函数.一般只需要直接写到sql语句后面就行了.LIMIT子 句可以用来限制由SELECT语句返回过来的数据数量,它 ...