LOJ528 「LibreOJ β Round #4」求和
LOJ528 「LibreOJ β Round #4」求和
先按照最常规的思路推一波:
&\sum_{i=1}^n\sum_{j=1}^m\mu^2(\gcd(i,j))\\
=&\sum_{d=1}^{\min(n,m)}\mu^2(d)\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)=d]\\
=&\sum_{d=1}^{\min(n,m)}\mu^2(d)\sum_{t=1}^{\min(n,m)}\mu(t)\lfloor \frac{n}{dt}\rfloor \lfloor \frac{m}{dt}\rfloor\\
=&\sum_{x=1}^{\min(n,m)}\lfloor \frac{n}{x}\rfloor \lfloor \frac{m}{x}\rfloor\sum_{d|x}\mu^2(d)\mu(\frac x d)
\end{aligned}
\]
然后后面这个东西一定是个积性函数,所以可以求出质数及其幂次上的的值,最后整除分块即可。
然后有另一种更为简洁的思路:
有反演公式 \(\mu^2(x)=\sum_{d^2|x}\mu(d)\)。
考虑证明。
若 \(x\) 为 \(\texttt{square_free numbers}\),即其无平方因子,则 \(d\) 只能取 \(1\),显然成立。
若 \(x\) 有 \(\texttt{square_free numbers}\),即其有平方因子,则左边显然为 \(0\)。
设其含有某个平方因子 \(p_k\)。
则对于所有的 \(d^2\),其中若 \(d\) 含有 \(p^2\),其对答案的贡献为 \(0\)。
否则 \(d\) 含有 \(p\) 或不含 \(p\),显然这两种情况的个数相同,且根据莫比乌斯函数的定义,对于答案的贡献恰好相反,也就是贡献和为 \(0\)。
所以有
&\sum_{i=1}^n\sum_{j=1}^m\mu^2(\gcd(i,j))\\
=&\sum_{i=1}^n\sum_{j=1}^m\sum_{d^2|\gcd(i,j)}\mu(d)\\
\end{aligned}
\]
然后你发现我们只需要找到 \(\gcd(i,j)\) 为完全平方数或其倍数的数,所以我们直接枚举就好了。
/*---Author:HenryHuang---*/
/*---Never Settle---*/
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
const ll maxn=4e6+5;
const ll mod=998244353;
ll P;
ll pri[maxn],mu[maxn],p[maxn],cnt;
void init(){
mu[1]=1;
for(ll i=2;i<=P;++i){
if(!p[i]) pri[++cnt]=i,mu[i]=-1;
for(ll j=1;j<=cnt&&pri[j]*i<=P;++j){
p[pri[j]*i]=1;
if(i%pri[j]==0){
mu[pri[j]*i]=0;
break;
}
else mu[pri[j]*i]=-mu[i];
}
}
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
ll n,m;cin>>n>>m;
if(n<m) swap(n,m);P=sqrt(n+0.5);init();
ll ans=0;
for(ll i=1;1ll*i*i<=n;++i){
if(!mu[i]) continue;
ll x=i*i;
ans=(ll)(ans+mu[i]*(1ll*(n/x)%mod*((m/x)%mod))%mod+mod)%mod;
}
cout<<ans<<'\n';
return 0;
}
LOJ528 「LibreOJ β Round #4」求和的更多相关文章
- LibreOJ #528. 「LibreOJ β Round #4」求和
二次联通门 : LibreOJ #528. 「LibreOJ β Round #4」求和 /* LibreOJ #528. 「LibreOJ β Round #4」求和 题目要求的是有多少对数满足他们 ...
- Loj #528. 「LibreOJ β Round #4」求和 (莫比乌斯反演)
题目链接:https://loj.ac/problem/528 题目:给定两个正整数N,M,你需要计算ΣΣu(gcd(i,j))^2 mod 998244353 ,其中i属于[1,N],j属于[1,M ...
- loj#528. 「LibreOJ β Round #4」求和
求:\(\sum_{i=1}^n\sum_{j=1}^m\mu(gcd(i,j))^2\) 化简可得\(\sum_{i=1}^{min(n,m)}{\lfloor \frac{n}{i} \rfloo ...
- 「LibreOJ β Round #4」求和
https://loj.ac/problem/528 1 , d =1 μ(d)= (-1)^k , d=p1*p2*p3*^pk pi为素数 0 ...
- loj #547. 「LibreOJ β Round #7」匹配字符串
#547. 「LibreOJ β Round #7」匹配字符串 题目描述 对于一个 01 串(即由字符 0 和 1 组成的字符串)sss,我们称 sss 合法,当且仅当串 sss 的任意一个长度为 ...
- [LOJ#531]「LibreOJ β Round #5」游戏
[LOJ#531]「LibreOJ β Round #5」游戏 试题描述 LCR 三分钟就解决了问题,她自信地输入了结果-- > -- 正在检查程序 -- > -- 检查通过,正在评估智商 ...
- [LOJ#530]「LibreOJ β Round #5」最小倍数
[LOJ#530]「LibreOJ β Round #5」最小倍数 试题描述 第二天,LCR 终于启动了备份存储器,准备上传数据时,却没有找到熟悉的文件资源,取而代之的是而屏幕上显示的一段话: 您的文 ...
- [LOJ#516]「LibreOJ β Round #2」DP 一般看规律
[LOJ#516]「LibreOJ β Round #2」DP 一般看规律 试题描述 给定一个长度为 \(n\) 的序列 \(a\),一共有 \(m\) 个操作. 每次操作的内容为:给定 \(x,y\ ...
- [LOJ#515]「LibreOJ β Round #2」贪心只能过样例
[LOJ#515]「LibreOJ β Round #2」贪心只能过样例 试题描述 一共有 \(n\) 个数,第 \(i\) 个数 \(x_i\) 可以取 \([a_i , b_i]\) 中任意值. ...
随机推荐
- Go语言介绍(背景、特点)
一.go语言的背景 Go是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易. Go(又称 Golang)是 Google 的 Rob Pike(罗勃.派克),Ken Thompson(肯· ...
- 关于LSTM核心思想的部分理解
具体资料可以查阅网上,这里提到一些难理解的点.别人讲过的知识点我就不重复了. LSTM 的关键就是细胞状态,按照水平线从左向右运行,如同履带,在整个链上运行. 根据时间t-1,t,t+1,我们可以看出 ...
- Yolo:实时目标检测实战(上)
Yolo:实时目标检测实战(上) YOLO:Real-Time Object Detection 你只看一次(YOLO)是一个最先进的实时物体检测系统.在帕斯卡泰坦X上,它以每秒30帧的速度处理图像, ...
- YOLO、SSD、FPN、Mask-RCNN检测模型对比
YOLO.SSD.FPN.Mask-RCNN检测模型对比 一.YOLO(you only look once) YOLO 属于回归系列的目标检测方法,与滑窗和后续区域划分的检测方法不同,他把检测任务当 ...
- GPU与显卡
GPU与显卡 一.什么是GPU? GPU这个概念是由Nvidia公司于1999年提出的.GPU是显卡上的一块芯片,就像CPU是主板上的一块芯片.那么1999年之前显卡上就没有GPU吗?当然有,只不过那 ...
- MinkowskiPooling池化(下)
MinkowskiPooling池化(下) MinkowskiPoolingTranspose class MinkowskiEngine.MinkowskiPoolingTranspose(kern ...
- JavaScript 中精度问题以及解决方案
JavaScript 中的数字按照 IEEE 754 的标准,使用 64 位双精度浮点型来表示.其中符号位 S,指数位 E,尾数位M分别占了 1,11,52 位,并且在 ES5 规范 中指出了指数位E ...
- awr快照保留时间修改
============== awr快照保留时间修改 ============= 1.查询当前awr报告保留时间 col SNAP_INTERVAL for a20col RETENTION for ...
- Spring——Bean的作用域
Spring中Bean的作用域有五种,分别是singleton.prototype.request.session.globalSession.其中request.session.globalSess ...
- 利用SPI机制实现责任链模式中的处理类热插拔
最近看到责任链模式的时候每增加一个处理类,就必须在责任链的实现类中手动增加到责任链中,具体代码基本就是list.add(new FilterImpl()),可以看到每次增加一个处理类,就必须添加一行上 ...