转载请注明出处:http://blog.csdn.net/Bule_Zst/article/details/76794810


题目:http://acm.hdu.edu.cn/showproblem.php?pid=6069

Problem Description

In mathematics, the function d(n) denotes the number of divisors of positive integer n.

For example, d(12)=6 because 1,2,3,4,6,12 are all 12’s divisors.

In this problem, given l,r and k, your task is to calculate the following thing :

(∑i=lrd(ik))mod998244353

\begin{eqnarray*} \left(\sum_{i=l}^r d(i^k)\right)\bmod 998244353 \end{eqnarray*}

Input

The first line of the input contains an integer T(1≤T≤15), denoting the number of test cases.

In each test case, there are 3 integers l,r,k(1≤l≤r≤101210^{12},r−l≤10610^6,1≤k≤10710^7).

Output

For each test case, print a single line containing an integer, denoting the answer.

Sample Input

3
1 5 1
1 10 2
1 100 3

Sample Output

10
48
2302

题意:

d(x)表示x的因子的个数,求公式的值

方法:

首先枚举出小于 N−−√\sqrt{N} 的素数(N = 101210^{12})(注意,代码中的N为10610^6)。

接着,根据公式计算结果

公式:若n=pc11pc22...pcmmn=pn=p_1^{c_1}p_2^{c_2}...p_m^{c_m}n=p,则d(nk)=(kc1+1)(kc2+1)...(kcm+1)d(n^k)=(kc_1+1)(kc_2+1)...(kc_m+1)

代码:

#include<cstdio>
typedef long long ll;
const int N=1000010,P=998244353;
int Case,i,j,k,p[N/10],tot,g[N],ans;ll n,l,r,f[N];
bool v[N];void work( ll p ){// 传入一个素数,对f数组进行检验,如果该素数是其因子,则循环除尽,并更新g数组相应元素for( ll i = l / p * p; i <= r; i += p ) if(i>=l) {int o=0;while( f[i-l] % p == 0 ) f[i-l]/=p,o++;g[i-l] = 1LL * g[i-l] * ( o * k + 1 ) % P;}
}
int main(){// 将小于N的素数存在p数组中for(i=2;i<N;i++){if(!v[i])p[tot++]=i;for(j=0;j<tot&&i*p[j]<N;j++){v[i*p[j]]=1;if(i%p[j]==0)break;}}scanf("%d",&Case);while(Case--){scanf("%lld%lld%d",&l,&r,&k);n=r-l;// f数组存储输入的数,g数组存储对应的答案for(i=0;i<=n;i++)f[i]=i+l,g[i]=1;// 只需循环到根号r,因为大于等于根号r的数是不可能成为小于r的数的因子的for(i=0;i<tot;i++){if(1LL*p[i]*p[i]>r)break;work(p[i]);}// 计算结果for( ans = i = 0; i <= n; i++ ) {if(f[i]>1)// 如果f[i]大于1,则意味着,之前的所有素数都不是它的因子,那么它自身一定是素数g[i]=1LL*g[i]*(k+1)%P;ans=(ans+g[i])%P;}printf("%d\n",ans);}return 0;
}

HDU 6069 题解相关推荐

  1. hdu - 1789 题解

    题意:主角打完ACM比赛回来,有一堆作业要做,每个作业有自己的deadline和score,如果不能在deadline之前完成就拿不到这个作业的分数,问主角最多能拿多少分. 题解:还是贪心策略,将作业 ...

  2. hdu 1789题解

    http://acm.hdu.edu.cn/showproblem.php?pid=1789: 这个题目就是用贪心的思想来做,首先按分数从高到底排下序,然后在判断哪几个不能完成时用到了一个小技巧. # ...

  3. HDU 6194 题解报告

    HDU[6194] 后缀数组+ST表 题目大意 在指定的字符串中找到仅出现k次的不同子串有几种,不同子串之间可重叠,题目在此.  做了一天的神题,之前思路一直都很混乱,直到看到同站的一位大佬的博客,e ...

  4. HDU 1593题解

    find a way to escape Problem Description 一日,话说0068与泛舟湖上.忽见岸边出现他的一大敌人elnil.0068当然不想落入elnil的魔爪,于是他就得想办 ...

  5. HDU 2102 题解(BFS 广度优先搜索 练习题)

    原题链接,但是HDU现在校外提交需要审核 欢迎来 SCPC OJ提交 知识点 : BFS(广搜/宽搜) 原题: 描述: 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生 ...

  6. Counting Divisors HDU - 6069

    设n=p_1^{c_1}p_2^{c_2}...p_m^{c_m}n=p​1​c​1​​​​p​2​c​2​​​​...p​m​c​m​​​​,则d(n^k)=(kc_1+1)(kc_2+1)...( ...

  7. hdu 2007题解

    问题: Problem Description 给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和. Input 输入数据包含多组测试实例,每组测试实例包含一行,由两个整数m和n组成. ...

  8. hdu oj1095题解

    #include <iostream> using namespace std; int main() { int a,b,sum; int i; while(cin>>a&g ...

  9. hdu oj1096题解

    #include <iostream> using namespace std; int main() { int n,i,j,k,sum; cin>>n; while(n-- ...

  10. hdu oj1094题解

    #include <iostream> using namespace std; int main() { int a,b,c,sum; while (cin>>a) { su ...

最新文章

  1. 仅用 480 块 GPU 跑出万亿参数!全球首个“低碳版”巨模型 M6 来了
  2. 【调侃】IOC前世今生
  3. Excel异常Cannot get a text value from a numeric cell
  4. python无效的类字符串_Python不规范的日期字符串处理类
  5. AtCoder Grand Contest 025
  6. 怎样用javascript给控件赋值,使在服务器端得到此控件的值?或怎样将前台的(或js)中的值传递到后台
  7. 门当户对的感情真的很重要吗?
  8. python从入门到精通 清华大学出版社-清华大学出版社-图书详情-《Python语言程序设计》...
  9. MFC框架类、文档类、视图类相互访问的方法
  10. 10.11 noip模拟试题
  11. php 怎么开启错误报告,php错误报告级别怎么设置?
  12. Elastic Search + Logstash + Kibana 初学者日志
  13. paip.提升用户体验---显示密码控件ShowPwdController
  14. 如何建设研发部门体系,理清责任和关系
  15. java 算法,Java的十大算法你掌握好了吗?
  16. 用turtle画奥运五环
  17. QT开发和MFC开发的经典案例
  18. 第二届全国高校计算机能力挑战赛-Java程序设计赛
  19. 怎么翻译整篇Excel文档?Excel文档翻译一招搞定
  20. The Monster

热门文章

  1. gRPC源码阅读及实践之 Resolver
  2. 低功耗蓝牙中的蓝牙地址和隐私
  3. wireshark-filter帮助手册
  4. 用python编程点菜系统_python3实现点餐系统
  5. 深圳大学计算机网络实验五:Socket编程
  6. c语言小蜜蜂编程题,C语言经典题目“小蜜蜂“代码.docx
  7. 基于.NET平台的分层架构实战(九)——数据访问层的第三种实现:基于NBear框架的ORM实现
  8. 圆角半角数据库_SQL SERVER 全角和半角的解决方法
  9. 记账本软件的用例描述
  10. python学英语库_交流学英语的经验-js焦点图怎么写-WinFrom控件库|.net开源控件库|HZHControls官网...