P3935 Calculating

题目描述

若xx分解质因数结果为\(x=p_1^{k_1}p_2^{k_2}\cdots p_n^{k_n},令f(x)=(k_1+1)(k_2+1)\cdots (k_n+1)f(x)=(k1​+1)(k2​+1)⋯(kn​+1),\)求\(\sum_{i=l}^rf(i)\)对\(998244353\)取模的结果。

输入输出格式

输入格式:

输入共一行,两个数,\(l,r。\)

输出格式:

输出共一行,一个数,为\(\sum_{i=l}^rf(i)\)对\(998244353\)取模的结果。

输入输出样例

输入样例#1:

2 4

输出样例#1:

7

说明

Solution

如果你做过一些莫比乌斯反演的题,那么这道题可以说就是一个整除分块的模板

首先我们需要知道一个定理:约数个数定理

设\(f(x)\)为\(x\)的约数个数

\[n=\prod_{i=1}^k{p_i^{a_i}}\to f(n)=\prod_{i=1}^k{(a_i+1)}
\]

上述式子中,\(p_i\)为质数

证明:

由约数定义可知\(p1^{a1}\)的约数有:\(p1^0, p1^1, p1^2......p1^a1\) ,共\((a1+1)\)个;同理\(p2^{a2}\)的约数有\((a2+1)\)个......\(pk^{ak}\)的约数有\((ak+1)\)个。根据乘法原理答案就是上述式子

考虑一下题目所求,

\[Ans=\sum_{i=l}^{r}f(i)
\]

转换一下变成

\[Ans=\sum_{i=1}^rf(i)-\sum_{i=1}^{l-1}f(i)
\]

对于\(f(n)\),我们可以认为

\[f(n)=\sum_{d|n}1
\]

令\(Ans1=\sum_{i=1}^rf(i)\),由此推出

\[Ans1=\sum_{i=1}^r\sum_{d|i}1
\]

更换枚举项,改为枚举i的因子

\[Ans1=\sum_{d=1}^r\lfloor\frac{r}{d}\rfloor
\]

同理求出\(Ans2\),然后用一下整除分块\(O(\sqrt n)\)预处理就可以了,不会的看一下我上面放的链接

Code

#include<bits/stdc++.h>
#define rg register
#define il inline
#define Min(a,b) (a)<(b)?(a):(b)
#define Max(a,b) (a)>(b)?(a):(b)
#define lol long long
using namespace std; const lol mod=998244353; void in(lol &ans) {
ans=0; lol f=1; char i=getchar();
while(i<'0' || i>'9') {if(i=='-') f=-1; i=getchar();}
while(i>='0' && i<='9') ans=(ans<<1)+(ans<<3)+i-'0',i=getchar();
ans*=f;
} int main()
{
lol ans1=0,ans2=0; lol n,m; in(n),in(m),n--;
for(rg lol l=1,r,len;l<=n;l=r+1) {
r=n/(n/l),len=r-l+1;
ans1=(1ll*(ans1%mod+len%mod*(n/l)%mod)%mod)%mod;
}
for(rg lol l=1,r,len;l<=m;l=r+1) {
r=m/(m/l),len=r-l+1;
ans2=(1ll*(ans2%mod+len%mod*(m/l)%mod)%mod)%mod;
}
printf("%lld\n",(ans2-ans1+mod)%mod);//注意这里,最后答案一定要(ans+mod)%mod,不然可能会出现负数
return 0;
}

博主蒟蒻,随意转载.但必须附上原文链接

http://www.cnblogs.com/real-l/

最新文章

  1. Android性能优化之App应用启动分析与优化
  2. Python的平凡之路(3)
  3. 通过微信查找SAP TCODE代码
  4. Android 优化布局层次结构
  5. HDU 5113 Black And White 回溯+剪枝
  6. VS2008 引用程序集 没有强名称 解决办法
  7. [Everyday Mathematic]20150213
  8. UVa699 The Falling Leaves
  9. 使用fiddler4做代理调试手机页面
  10. python3.5读取网页代码,并保存
  11. php 多维数组 arrayList array()
  12. Linux用户相关命令
  13. rsync远程同步
  14. 记一次被yield return坑的历程。
  15. selenium元素定位大全
  16. _vimrc 的配置
  17. 【leetcode76】Intersection of Two Arrays II
  18. php 求余
  19. JavaScript:sort() 方法
  20. tomcat7.0.27的bio,nio.apr高级运行模式(转)

热门文章

  1. 181. Flip Bits【LintCode, by java】
  2. python数据分析基础——pandas Tutorial
  3. Python3 小工具-UDP扫描
  4. 三:QJM HDFS高可用
  5. iOS-addSubView时给UIView添加效果
  6. Jenkins系列-Jenkins添加git密钥对
  7. Chrome Extensions API &amp; options
  8. windows 2008 iis7 上传大文件限制的真正解决办法
  9. JavaScript Array 类型
  10. matlab padarray