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 ...
随机推荐
- 关于cisco路由器配置的一些参数
单臂路由设置 Switch(config-if)#no switchport Switch(config)#ip routingSwitch(config)#interface FastEtherne ...
- leetcode个人题解——#33 Search in Rotated Sorted Array
思路:每次取中间元素,一定有一半有序,另一半部分有序,有序的部分进行二分查找,部分有序的部分递归继续处理. class Solution { public: ; int middleSearch(in ...
- PSP DAILY软件功能说明书
PSP DAILY软件功能说明书 一.开发背景 你在完成了一周的软件工程作业后,需要提交一个PSP图表,里面有4项,如下所示: 1.本周PSP表格,包含每项任务的开始.中断.结束.最终时间,格式如下: ...
- 【每日scrum】NO.9
(1)这是我们冲刺的最后一天,晚上我们的团队进行了收尾工作:第一阶段的任务基本完成,软件主要实现了校园景点照片以及对应的介绍,查询最短路径,查询涉及相关景点的查询,查询全部路径,基本界面的设计,导航功 ...
- 升级Xcode之后VVDocumenter-Xcode不能用的解决办法
VVDocumenter-Xcode上一款快速添加标准注释,并可以自动生成文档的插件.有了VVDocumenter-Xcode Objective-C效果图: Swift效果图:从UUID证书从而保证 ...
- 使用 virt-install 创建虚拟机
使用 virt-install 创建虚拟机 virt-install --help 使用 qemu-kvm 创建虚拟机 介绍 1:命令路径:/usr/libexec/qemu-kvm 2:添加至环 ...
- adb使用过程常见的几种错误总结
问题1:Failure [INSTALL_FAILED_ALREADY_EXISTS] 问题原因:该程序已存在. 解决方法:增加-r参数,即可成功覆盖安装 问题2:Failure [INSTALL_F ...
- 在mvc4中上传、导入和导出excel表方法总结
通过excel的导入导出练习,使用NPOI组件还是方便一点,所有下面就以NPOI下的导入导出给出实例,通过网页导入excel表,首先上传,再导入数据到库,这里为了方便就不导入到库中了,直接拿到数据.导 ...
- 【数据库】百万级数据库SQL优化大总结
网上关于SQL优化的教程很多,但是比较杂乱.近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充. 这篇文章我花费了大量的时间查找资料.修改.排版,希望大家阅读之后,感觉 ...
- CERC2013(C)_Magical GCD
题意是这样的,给你一个序列a[i],需要你选一段连续的序列a[i]到a[j],使得长度乘以这个段的gcd最大. 一开始总是以为是各种神奇的数据结构,诶,后来才发现,机智才是王道啊. 可以这样考虑,每次 ...