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

  1. #include<bits/stdc++.h>
  2. #define rg register
  3. #define il inline
  4. #define Min(a,b) (a)<(b)?(a):(b)
  5. #define Max(a,b) (a)>(b)?(a):(b)
  6. #define lol long long
  7. using namespace std;
  8. const lol mod=998244353;
  9. void in(lol &ans) {
  10. ans=0; lol f=1; char i=getchar();
  11. while(i<'0' || i>'9') {if(i=='-') f=-1; i=getchar();}
  12. while(i>='0' && i<='9') ans=(ans<<1)+(ans<<3)+i-'0',i=getchar();
  13. ans*=f;
  14. }
  15. int main()
  16. {
  17. lol ans1=0,ans2=0; lol n,m; in(n),in(m),n--;
  18. for(rg lol l=1,r,len;l<=n;l=r+1) {
  19. r=n/(n/l),len=r-l+1;
  20. ans1=(1ll*(ans1%mod+len%mod*(n/l)%mod)%mod)%mod;
  21. }
  22. for(rg lol l=1,r,len;l<=m;l=r+1) {
  23. r=m/(m/l),len=r-l+1;
  24. ans2=(1ll*(ans2%mod+len%mod*(m/l)%mod)%mod)%mod;
  25. }
  26. printf("%lld\n",(ans2-ans1+mod)%mod);//注意这里,最后答案一定要(ans+mod)%mod,不然可能会出现负数
  27. return 0;
  28. }

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

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. 总结获取原生JS(javascript)基本操作

    var a = document.getElementByIdx_x_x("dom"); jsCopy(a);//调用清理空格的函数 var b = a.childNodes;// ...

  2. Idea Live Templates

    常用live templates 模板 注释 : * * @param $params$ * @return $return$ * $date$ $time$ chiyuanzhen743 */ lo ...

  3. POJ - 3259

    要判断是否有负的权值 #include<iostream> #include<stdio.h> #include<algorithm> #include<st ...

  4. jQuery用unbind方法去掉hover事件及其他方法介绍

    近日项目开发十分的繁忙,其中一个需求是实现响应式导航.(响应式的问题我们在css相关的博客中再交流) 大家都知道导航是需要下来菜单效果的,必然就会用到 jQuery的 hover() 方法.若是导航放 ...

  5. Centos7添加静态路由

    本文摘取自 Centos7系统配置上的变化(二)网络管理基础 一.ip route显示和设定路由 1.显示路由表 [root@centos7 ~]# ip route show default via ...

  6. .Net并行编程 - 并行任务基础知识

    在微软的.NET Framework中,任务是通过System.Threading.Tasks命令空间中的Task类来实现的.它的静态属性Task.Factory是TaskFactory类的一个实例, ...

  7. Linux 150命令之 文件和目录操作命令 ls

    文件和目录操作命令 ls 查看文件和目录查看显示详信息 ls 工具的参数 ls -l 查看文件详细信息 ls -h 查看文件的大小 ls -ld 只查看目录信息 ls –F 给不同文件加上不同标记 l ...

  8. Delegate(QLabel和QComboBox)

    一.最终效果 二.实现思路 1.createEditor()中create两个控件,分别是QLabel和QComboBox,将其添加到一个widget中,然后返回该widget: 2.setEdito ...

  9. Java package和import语句

    Java中的package和import语句 如果你想让其他人访问你的类,你一定要把你写的类放到正确的子目录下. 在Java里,对于位于包中的类是这样管理的: Java编译器把包对应于文件系统的目录管 ...

  10. 项目uml

    [团队信息] 团队项目: 小葵日记--主打记录与分享模式的日记app 队名:日不落战队 队员信息及贡献分比例: 短学号 名 本次作业博客链接 此次作业任务 贡献分配 备注 501 安琪 http:// ...