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/

洛谷P3935 Calculating (莫比乌斯反演)的更多相关文章

  1. 洛谷P3935 Calculating(整除分块)

    题目链接:洛谷 题目大意:定义 $f(x)=\prod^n_{i=1}(k_i+1)$,其中 $x$ 分解质因数结果为 $x=\prod^n_{i=1}{p_i}^{k_i}$.求 $\sum^r_{ ...

  2. 洛谷 - P3935 - Calculating - 整除分块

    https://www.luogu.org/fe/problem/P3935 求: \(F(n)=\sum\limits_{i=1}^{n}d(i)\) 枚举因子\(d\),每个因子\(d\)都给其倍 ...

  3. 洛谷 P3935 Calculating

    虽然对这道题没有什么帮助,但是还是记一下:约数个数也是可以线性筛的 http://www.cnblogs.com/xzz_233/p/8365414.html 测正确性题目:https://www.l ...

  4. [洛谷P3935]Calculating

    题目大意:设把$x$分解质因数的结果为$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)$,求$\su ...

  5. 洛谷 P3935 Calculating 题解

    原题链接 一看我感觉是个什么很难的式子-- 结果读完了才发现本质太简单. 算法一 完全按照那个题目所说的,真的把质因数分解的结果保留. 最后乘. 时间复杂度:\(O(r \sqrt{r})\). 实际 ...

  6. [洛谷3935]Calculating

    题目链接:https://www.luogu.org/problemnew/show/P3935 首先显然有\(\sum\limits_{i=l}^rf(i)=\sum\limits_{i=1}^rf ...

  7. 洛谷P3935 Calculation [数论分块]

    题目传送门 格式难调,题面就不放了. 分析: 实际上这个就是这道题的升级版,没什么可讲的,数论分块搞就是了. Code: //It is made by HolseLee on 18th Jul 20 ...

  8. 整除分块学习笔记+[CQOI2007]余数求和(洛谷P2261,BZOJ1257)

    上模板题例题: [CQOI2007]余数求和 洛谷 BZOJ 题目大意:求 $\sum^n_{i=1}k\ mod\ i$ 的值. 等等……这题就学了三天C++的都会吧? $1\leq n,k\leq ...

  9. 莫比乌斯反演学习笔记+[POI2007]Zap(洛谷P3455,BZOJ1101)

    先看一道例题:[POI2007]Zap BZOJ 洛谷 题目大意:$T$ 组数据,求 $\sum^n_{i=1}\sum^m_{j=1}[gcd(i,j)=k]$ $1\leq T\leq 50000 ...

随机推荐

  1. 如何区别cookie和token?---测试cookie和token接口时先看。

    cookie 是什么? cookie--------------在浏览器中的长相?火狐浏览器 ----------------------------------------------------- ...

  2. DP动态规划练习

    先来看一下经典的背包问题吧 http://www.cnblogs.com/Kalix/p/7617856.html  01背包问题 https://www.cnblogs.com/Kalix/p/76 ...

  3. Flex 布局浅析

    除了 CSS 中传统的布局系统之外,CSS3还提供了一个新布局系统.在这个新的框模型中,框的子代采用水平或垂直布局,而且可将未使用的空间分配给特定的子代,或者通过“弹性”分配给应展开的子代,在各子代间 ...

  4. Apache——SSL协议

    SSL 协议既用到了公钥加密技术又用到了对称加密技术,对称加密技术虽然比公钥加密技术的速度快,可是公钥加密技术提供了更好的身份认证技术.SSL 的握手协议非常有效的让客户和服务器之间完成相互之间的身份 ...

  5. 关于LNMP常见问题和性能方面的个人理解

    简单整理,自己做备忘的,不为其他作任何参考- PHP程序 1.开启慢日志,过滤超时时间为1s的方法,针对性优化,可以通过添加缓存方式解决. 2.过滤access日志,统计哪些请求较多较为频繁,是否合理 ...

  6. 又见CLOSE_WAIT

    原文: http://mp.weixin.qq.com/s?__biz=MzI4MjA4ODU0Ng==&mid=402163560&idx=1&sn=5269044286ce ...

  7. 将footer固定在页面最下方

    方法一: HTML结构: <div id="id_wrapper"> <div id="id_header"> Header Block ...

  8. 2017秋-软件工程第四次作业(2)-结对使用TDD框架完成单元测试

    第一次接触“单元测试”这个要求,我和队友学习了一些示例后开始操作.如下展示一些建立单元测试的过程.Step1:右键单击[解决方案]->左键单击[添加(D)]->[新建项目(N)]. Ste ...

  9. qwe

    这次作业我负责的部分是把爬取完的聊天记录经行数据挖掘以及经行各种普通过滤高级过滤等. 运行截图如下: 数据分为四部分:账户名.qq/邮箱.包含关键词的发言次数.包含关键词的发言字数. 遇到的困难及解决 ...

  10. Android中Parcelabel对象的使用和理解

    1. Parcelable接口 Interface for classes whose instances can be written to and restored from a Parcel. ...