题目:
CF机子真心强大啊,这样才跑了600ms,给了你n个数的序列,然后m次询问,每次询问求出序列中每个数是 区间[a,b]内的 几个素数的倍数统计一下,然后对于个数求和,看了题目下面的hint很易懂,然后看到a,b的范围有些大哈,2*10^9,不知道怎么处理,但是后来发现,序列中的数 最大为10^7,所以就算a,b,再大也无所谓的,大于序列中的最大数的部分的素数,序列中不会有任何数 是它倍数...
分类:
其他好文 时间:
2014-11-17 22:49:04
阅读次数:
212
题目:输出n!中素数因数的个数。
分析:数论。这里使用欧拉筛法计算素数,在计算过程中求解即可。
传统筛法是利用每个素数,筛掉自己的整数倍;
欧拉筛法是利用当前计算出的所有素数,乘以当前数字筛数;
所以每个前驱的素椅子个数一定比当前数的素因子个数少一个。
说明:又一次用了“线性筛法”。
#include
#incl...
分类:
其他好文 时间:
2014-11-17 14:04:17
阅读次数:
138
A 傻缺题,直接先把素数搞出来然后枚举一下就好了。#include #include #include #include using namespace std;const int maxn = 1e4 + 10;bool vis[maxn];vector pnum;void init() { .....
分类:
其他好文 时间:
2014-11-16 22:55:10
阅读次数:
365
1 /* 2 类似完全背包,容量为n的背包用素数填,求满背包的种数 3 dp(i,j)表示用不超过i的素数组成的j的种数 4 dp[i][j]=dp[i-1][j],若i为素数则dp[i][j]+=dp[i][j-i] 5 */ 6 #include 7 #include 8 #include...
分类:
其他好文 时间:
2014-11-16 20:07:22
阅读次数:
307
hoj1181,寻找丑数。
题意:把只具有素数因子2、3、5的数称为丑数;特别地,1也算做丑数。
把所有可能的丑数按从小到大的顺序排列。
例如:前11个丑数序列为1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, ...
要求输出第1500个丑数。
分析:采用动态规划的解法,初始时,设置三个指针p2,p3,p5。
计算三个指针指向的数分别乘以各自的因子2、3...
分类:
其他好文 时间:
2014-11-16 16:05:22
阅读次数:
180
HDU 1431 素数回文(回文素数)
http://acm.hdu.edu.cn/showproblem.php?pid=1431
题意:
给你两个整数a,b。(5 <= a < b <= 100,000,000)要你按顺序输出[a,b]区间内的所有回文素数。
分析:
定理:如果一个数是回文且有偶数位,那么它能被11整除。
根据上面定理我们可知我们只需要找到区间[2,1000W)内的素数即可。(想想为什么)上面b的范围直接缩小了10倍。
剩下的工作就是用...
分类:
其他好文 时间:
2014-11-16 16:02:38
阅读次数:
183
HDU 1262 寻找素数对(素数)
http://acm.hdu.edu.cn/showproblem.php?pid=1262
题意:
哥德巴赫猜想大家都知道一点吧.我们现在不是想证明这个结论,而是想在程序语言内部能够表示的数集中,任意取出一个偶数,来寻找两个素数,使得其和等于该偶数.
做好了这件实事,就能说明这个猜想是成立的.由于可以有不同的素数对来表示同一个偶数,所以专门要求所寻找的素数对是两个值最相近的.
分析:
显然先用筛选法求出10000以内的所有素数,然后对于给定的数X。 一定...
分类:
其他好文 时间:
2014-11-16 16:02:24
阅读次数:
148
HDU 2012 素数判定(素数)
http://acm.hdu.edu.cn/showproblem.php?pid=2012
题意:水题一枚
对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x<y<=50),判定该表达式的值是否都为素数。
分析:
本题的数据范围很小,求出表达式在-39到50内的所有可能值可以得到下面的数:
1523 1447 13731301 1231 1163 1097 1033 971 911
853 797 7...
分类:
其他好文 时间:
2014-11-16 16:00:02
阅读次数:
167
HDU 2098 分拆素数和(素数)
http://acm.hdu.edu.cn/showproblem.php?pid=2098
题意:
给你一个偶数,问你这个偶数有多少种方式能由两个不同的素数构成?
分析:
首先求出10000以内的所有素数。
如果这个偶数X能有两个不同的素数构成,那么一定一个小于(X/2-1). 只要从小到大枚举这个比较小的素数a,然后看看X-b是否是素数即可得到一种组合方式。
依次统计所有组合方式即可。
AC代码:...
分类:
其他好文 时间:
2014-11-16 14:45:17
阅读次数:
231