HDOJ 6069 素数筛
链接:
http://acm.hdu.edu.cn/showproblem.php?pid=6069
题意:
就是题目中的公式
题解:
这个题公式很好推 d(nk) = (kc1 + 1)(kc2 + 1):::(kcm + 1)。
就是不能直接暴力算,需要利用区间素数筛
枚举不超过根号r的所有质数p,再枚举区间[l; r] 中所有p 的倍数,将其分解质因数。
我开始还用了map存了,超时,换成vector继续超时,最后不存直接算 总算过了
stl真的很耗时啊 以后遇到这种1e6的能不存就不存了
代码:
31 const ll mod = 998244353; 32 33 ll num[MAXN]; 34 ll ans[MAXN]; 35 bool is_prime[MAXN]; 36 VI v[MAXN]; 37 ll a, b, k; 38 39 void work() { 40 for (ll i = 0; i <= b - a; i++) num[i] = i + a, ans[i] = 1; 41 for (ll i = 0; i*i <= b; i++) is_prime[i] = true; 42 for (ll i = 2; i*i <= b; i++) if (is_prime[i]) { 43 for (ll j = 2 * i; j*j <= b; j += i) is_prime[j] = false; 44 for (ll j = max(2LL, ((a + i - 1) / i)*i); j <= b; j += i) { 45 int sum = 0; 46 while (num[j - a] % i == 0) num[j - a] /= i, sum++; 47 ans[j - a] = (ans[j - a] * (k*sum + 1)) % mod; 48 } 49 } 50 for (ll i = a; i <= b; i++) if (num[i - a] != 1) ans[i - a] = (ans[i-a]*(k + 1)) % mod; 51 ll ret = 0; 52 for (ll i = a; i <= b; i++) ret = (ret + ans[i - a]) % mod; 53 cout << ret << endl; 54 } 55 56 int main() { 57 ios::sync_with_stdio(false), cin.tie(0); 58 int T; 59 cin >> T; 60 while (T--) { 61 cin >> a >> b >> k; 62 work(); 63 } 64 return 0; 65 }
转载于:https://www.cnblogs.com/baocong/p/7281867.html
HDOJ 6069 素数筛相关推荐
- HDU 6069 数论 区间素数筛 + 赛后反思
题目链接 设 x = p 1 a 1 p 2 a 2 . . . . p n a n x = p_1^{a_1}p_2^{a_2}....p_n^{a_n} x=p1a1p2a2....pna ...
- 面试官本拿求素数搞我,但被我优雅的“回击“了(素数筛)
原创公众号(希望能支持一下):bigsai 转载请联系bigsai 文章收录在github 求star 前言 现在的面试官,是无数开发者的梦魇,能够吊打面试官的属实不多,因为大部分面试官真的有那么那几 ...
- 等差素数列(素数筛暴力)
标题:等差素数列 2,3,5,7,11,13,-是素数序列. 类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列. 上边的数列公差为30,长度为6. 2004年, ...
- Prime Number Aizu - 0009(素数筛)
题意: 给一个数n,问1~n内有多少个素数 题目: Write a program which reads an integer n and prints the number of prime nu ...
- 筛表合集(素数筛 欧拉函数筛 莫比乌斯函数筛)
[目录] 一.素数筛 1.素数判断 2.素数普通筛 3.素数线性筛 4.素数区间筛 二.欧拉函数筛 三.莫比乌斯函数筛 [素数筛] 1.直接判定质数 bool judgePrime( int num ...
- Help Hanzo(素数筛)
题意:本题就是求l~u之间有多少个素数: 分析:因为题数很大,所以不能用正常的素数筛法,只能先筛一部分,在用这些素数再筛出l~u之间的素数.本题和另一道题目很相似(传送门): 另一道题题目链接:htt ...
- M - Help Hanzo (大数区间素数筛)
题目 思路:先对1e5之内的素数筛好,用这些素数筛去大区间内的合数. #include<cstdio> #include<cstring> #include<iostre ...
- M - Help Hanzo(模拟素数筛思想+优化)
题目意思就是求[a,b]的素数个数.这道题我一看枚举不就完了吗? 但是看到那个2^31次方就知道了,如果枚举肯定TLE了: 所以百度了一下说模拟素数筛.我觉得我自己有必要回忆一下素数筛原理. #inc ...
- C++实现暴力筛、朴素素数筛、埃氏素数筛、欧拉素数筛的解法
前言:今天有身边的人在群里吐槽了一道烟台大学OJ上面的水题 然后他提出的问题是:如何开一个1000w大小的数组来存储. What?我仔细看了一眼题目,觉得问题的关键并不是数组可以开多大.而是这是一道在 ...
最新文章
- python教程廖雪峰云-Python3基础教程-廖雪峰[带标签完整版]
- Javascript网页摇一摇
- Windows Server 2008 R2活动目录灾难恢复(二):备份与恢复(1)
- boost::contract模块实现name list名单的测试程序
- 从响应式Spring Data存储库流式传输实时更新
- lpc1768的gpio库函数_LPC1768之GPIO流水灯的实验例程
- su、sudo、sudo su、sudo -i的用法和区别
- LeetCode 208. Implement Trie (Prefix Tree)
- jquery 处理json字符串
- php屏蔽ip时间段,php中限制ip段访问、禁止ip提交表单的代码分享/用PHP打印出前一天的时间格式:...
- Java开发中学用eclipse code templates
- 读书笔记 - 《六神磊磊读唐诗》
- CVPR引起巨大争议的新技术Face2Face:当科技先进到让人害怕
- 实践“鱼塘养鱼论”,不断养鱼和捕鱼
- python中function takes exactly_Python 'takes exactly 1 argument (2 given)' Python error
- 阿里图标库icon字体使用详细步骤
- openjudge 1.5.37 雇佣兵
- C语言有符号 存储,【填空题】在C语言中,对于整型变量采用有符号数和_________数两种存储形式。...
- 考研如何克服严重的拖延症?
- Html+Css+js实现春节倒计时效果