hdu 2608 (数论)
hdu2608 0 or 1
题意:给你一个数N(N < 2^31), 问从 1--N 所有数的因子和S(N),求 S(N)%2 的值。
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2608
思路:参考了下其它博客,自己总结如下:
对于每一个数N,我们可以将其拆分为 N = 2^e1 * p2^e2 * p3^e3 * ... * pm^em (e1可能是0)。其中p1, p2... 都是 N 质因子。因为 N = 2^e1 * p2^e2 * p3^e3 * ... * pm^em ,我们可以的得到:
T[N]= [ ( 2^0+2^1+...+2^e1 ) * ( p2^1+p2^2+...+p2^e2 ) * ... * ( pm^0+pm^1+...+pm^em ) ]% 2;
( N的因子数有K个, K = (e1+1) * (e2+1) * ... * (em+1),排列组合原理,大家可以随便模拟一个数);
我们知道 ( 2^0+2^1+...+2^e1 )% 2 = 1 恒成立(因为有2^0=1),所以T[N]的值只取决与后面的乘式%2 是否出现了0,那么后面的式子怎样才会是零呢?很简单,因为所有的质素都是奇数,所以当除2以外的存在某一个质因子表达式为偶数项的时候就会为零了(偶数个奇数相加为偶数),也即只要满足至少存在一个 ei 的值为奇数(质因数 pi 项数为 ei- 0+ 1)。当然这题中,我们不会去直接计算为 0 的 T[i] 有多少多,这很困难,而是从反面求解,即计算 T[i] 为 1 的数的个数,这样,求 S[N] 也就转化为从 1-N 有多少个 T[i] 为1。回到前面,如果 T[i] 为 1,那么除了 2 之外所有质因子的 ei 都为偶数,这个条件就很好解决了,而不像前面的求解满足至少一项 ei 为奇数,既然除了 2 之外所有的 ei 都为偶数,所以:
i = 2^2k1 * p2^2k2 * p3^2k3 * ... * pm^2km = (2^k1 * P2^k2 * P3^k3 * ... * pm^km)^2 = x^2 ......(1)
或:i = 2^2k1+1 * p2^2k2 * p3^2k3 * ... * pm^2km = 2*(2^k1 * P2^k2 * P3^k3 * ... * pm^km)^2 = 2 * x^2 ......(2)
那么这个数一定会是 i = x^2 或者是 i= 2* x^2 的形式。所以统计从 1-N 之间有多少个满足 T[i] = 1 数吧。
那么 N 以内的数满足 (1) 和 (2) 式子的有多少呢?
首先,看一下满足(1)式子的个数: s1 = sqrt(n) 取下整,所以 : s1 = (int)sqrt(n*1.0) ;
然后,再看一下满足(2)式子的个数: s2 = sqrt(n/2.0) 取下整,所以 : s2 = (int)sqrt(n/2.0) 。
所以,1--N 内满足 T[i] = 1 的个数有 s1 + s2 个。
代码:
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std; int main()
{
int t, n;
scanf("%d", &t);
while(t--) {
scanf("%d", &n);
printf("%d\n",((int)sqrt(n*1.0)+(int)sqrt(n/2.0))&);
}
return ;
}
hdu 2608 (数论)的更多相关文章
- HDU 2608 底数优化分块 暴力
T(n) as the sum of all numbers which are positive integers can divied n. and S(n) = T(1) + T(2) + T( ...
- GCD and LCM HDU 4497 数论
GCD and LCM HDU 4497 数论 题意 给你三个数x,y,z的最大公约数G和最小公倍数L,问你三个数字一共有几种可能.注意123和321算两种情况. 解题思路 L代表LCM,G代表GCD ...
- HDU 4497 数论+组合数学
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4497 解题思路:将满足条件的一组x,z,y都除以G,得到x‘,y',z',满足条件gcd(x',y' ...
- hdu 4542 数论 + 约数个数相关 腾讯编程马拉松复赛
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4542 小明系列故事--未知剩余系 Time Limit: 500/200 MS (Java/Others) ...
- hdu 4961 数论?
http://acm.hdu.edu.cn/showproblem.php?pid=4961 给定ai数组; 构造bi, k=max(j | 0<j<i,a j%ai=0), bi=ak; ...
- hdu 1664(数论+同余搜索+记录路径)
Different Digits Time Limit: 10000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- hdu 3641 数论 二分求符合条件的最小值数学杂题
http://acm.hdu.edu.cn/showproblem.php?pid=3641 学到: 1.二分求符合条件的最小值 /*================================= ...
- hdu 4059 数论+高次方求和+容斥原理
http://acm.hdu.edu.cn/showproblem.php? pid=4059 现场赛中通过率挺高的一道题 可是容斥原理不怎么会.. 參考了http://blog.csdn.net/a ...
- HDU 4651 数论 partition 求自然数的拆分数
别人的解题报告: http://blog.csdn.net/zstu_zlj/article/details/9796087 我的代码: #include <cstdio> #define ...
随机推荐
- python基础知识-01-编码输入输出变量
python其他知识目录 名词解释: 编辑器 ide 程序员 操作系统 ASCAII码 unicode utf-8 浅谈CPU.内存.硬盘之间的关系 操作系统及Python解释器工作原理讲解 关于编译 ...
- Python--matplotlib 绘图可视化练手--折线图/条形图
最近学习matplotlib绘图可视化,感觉知识点比较多,边学习边记录. 对于数据可视化,个人建议Jupyter Notebook. 1.首先导包,设置环境 import pandas as pd i ...
- Intense Heat(前缀和或尺取)
The heat during the last few days has been really intense. Scientists from all over the Berland stud ...
- 第17次Scrum会议(10/29)【欢迎来怼】
一.小组信息 队名:欢迎来怼小组成员队长:田继平成员:李圆圆,葛美义,王伟东,姜珊,邵朔,冉华 小组照片 二.开会信息 时间:2017/10/29 17:20~17:42,总计22min.地点:东北师 ...
- SGU 181 X-Sequence(一题比较水的求模找规律)
E - X-Sequence Time Limit:500MS Memory Limit:4096KB 64bit IO Format:%I64d & %I64u Submit ...
- HDU 5154 Harry and Magical Computer 有向图判环
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5154 题解: 有向图判环. 1.用dfs,正在访问的节点标记为-1,已经访问过的节点标记为1,没有访 ...
- 用javascript代码拼html
公司新来的同事说,他们是用javascript代码拼html代码的,如果要修改值,就是修改对象的属性. 交代下,我们现在都是用拼字符串的方式拼html代码的.他提到如果写在单独的javascript文 ...
- SpringBoot与Swagger2整合
一.Swagger简介与优势 相信各位在公司写API文档数量应该不少,当然如果你还处在自己一个人开发前后台的年代,当我没说,如今为了前后台更好的对接,还为了以后交接方便,都有要求写API文档. Swa ...
- Java 线程安全问题
线程安全问题产生原因: 1.多个线程操作共享的数据: 2.操作共享数据的线程代码有多条. 当一个线程正在执行操作共享数据的多条代码过程中,其它线程也参与了运算, 就会导致线程安全问题的发生. cl ...
- MySQL 查询缓存机制(MySQL数据库调优)
查询缓存机制:缓存的是查询语句的整个查询结果,是一个完整的select语句的缓存结果 哪些查询可能不会被缓存 :查询中包含UDF.存储函数.用户自定义变量.临时表.mysql库中系统表.或者包含列级别 ...