链接:

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 素数筛相关推荐

  1. 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=p1a1​​p2a2​​....pna ...

  2. 面试官本拿求素数搞我,但被我优雅的“回击“了(素数筛)

    原创公众号(希望能支持一下):bigsai 转载请联系bigsai 文章收录在github 求star 前言 现在的面试官,是无数开发者的梦魇,能够吊打面试官的属实不多,因为大部分面试官真的有那么那几 ...

  3. 等差素数列(素数筛暴力)

    标题:等差素数列 2,3,5,7,11,13,-是素数序列. 类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列. 上边的数列公差为30,长度为6. 2004年, ...

  4. Prime Number Aizu - 0009(素数筛)

    题意: 给一个数n,问1~n内有多少个素数 题目: Write a program which reads an integer n and prints the number of prime nu ...

  5. 筛表合集(素数筛 欧拉函数筛 莫比乌斯函数筛)

    [目录] 一.素数筛 1.素数判断 2.素数普通筛 3.素数线性筛 4.素数区间筛 二.欧拉函数筛 三.莫比乌斯函数筛 [素数筛] 1.直接判定质数 bool judgePrime( int num ...

  6. Help Hanzo(素数筛)

    题意:本题就是求l~u之间有多少个素数: 分析:因为题数很大,所以不能用正常的素数筛法,只能先筛一部分,在用这些素数再筛出l~u之间的素数.本题和另一道题目很相似(传送门): 另一道题题目链接:htt ...

  7. M - Help Hanzo (大数区间素数筛)

    题目 思路:先对1e5之内的素数筛好,用这些素数筛去大区间内的合数. #include<cstdio> #include<cstring> #include<iostre ...

  8. M - Help Hanzo(模拟素数筛思想+优化)

    题目意思就是求[a,b]的素数个数.这道题我一看枚举不就完了吗? 但是看到那个2^31次方就知道了,如果枚举肯定TLE了: 所以百度了一下说模拟素数筛.我觉得我自己有必要回忆一下素数筛原理. #inc ...

  9. C++实现暴力筛、朴素素数筛、埃氏素数筛、欧拉素数筛的解法

    前言:今天有身边的人在群里吐槽了一道烟台大学OJ上面的水题 然后他提出的问题是:如何开一个1000w大小的数组来存储. What?我仔细看了一眼题目,觉得问题的关键并不是数组可以开多大.而是这是一道在 ...

最新文章

  1. python教程廖雪峰云-Python3基础教程-廖雪峰[带标签完整版]
  2. Javascript网页摇一摇
  3. Windows Server 2008 R2活动目录灾难恢复(二):备份与恢复(1)
  4. boost::contract模块实现name list名单的测试程序
  5. 从响应式Spring Data存储库流式传输实时更新
  6. lpc1768的gpio库函数_LPC1768之GPIO流水灯的实验例程
  7. su、sudo、sudo su、sudo -i的用法和区别
  8. LeetCode 208. Implement Trie (Prefix Tree)
  9. jquery 处理json字符串
  10. php屏蔽ip时间段,php中限制ip段访问、禁止ip提交表单的代码分享/用PHP打印出前一天的时间格式:...
  11. Java开发中学用eclipse code templates
  12. 读书笔记 - 《六神磊磊读唐诗》
  13. CVPR引起巨大争议的新技术Face2Face:当科技先进到让人害怕
  14. 实践“鱼塘养鱼论”,不断养鱼和捕鱼
  15. python中function takes exactly_Python 'takes exactly 1 argument (2 given)' Python error
  16. 阿里图标库icon字体使用详细步骤
  17. openjudge 1.5.37 雇佣兵
  18. C语言有符号 存储,【填空题】在C语言中,对于整型变量采用有符号数和_________数两种存储形式。...
  19. 考研如何克服严重的拖延症?
  20. Html+Css+js实现春节倒计时效果

热门文章

  1. NGUI 学习笔记实战——制作商城UI界面
  2. linux 根目录下的子目录的意义
  3. [zz] 深入java虚拟机之本地方法
  4. 洛谷 P2679 子串 【dp神题】【滚动数组】【2015 noip d2t2】
  5. Linux下Chrome/Chromium窗口边框有白线
  6. epoll_data_t里面的void *ptr; int fd; u32; u64 分析
  7. Android 面试题目之 线程池
  8. 再次证明消息四元组的处理顺序。
  9. Android 代码设置调试等待
  10. 360Apm源码解析