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]\) 中任意值. ...
随机推荐
- SpringBoot基础学习(三) 自定义配置、随机数设置及参数间引用
自定义配置 SpringBoot免除了项目中大部分手动配置,可以说,几乎所有的配置都可以写在全局配置文件application.peroperties中,SpringBoot会自动加载全局配置文件从而 ...
- HTML <a> 标签的 href 属性
w3school页面的描述: HTML <a> 标签的 href 属性 HTML <a> 标签 实例 href 属性规定链接的目标: <a href="http ...
- ICCV2019论文点评:3D Object Detect疏密度点云三维目标检测
ICCV2019论文点评:3D Object Detect疏密度点云三维目标检测 STD: Sparse-to-Dense 3D Object Detector for Point Cloud 论文链 ...
- TensorRT 数据和表格示例
TensorRT 数据和表格示例 TensorRT 7.1在绑定索引方面比其前身更加严格.以前,允许错误配置文件的绑定索引.考虑一个网络,该网络具有四个输入,一个输出,以及在其中的三个优化配置文件 I ...
- Linux内存技术分析(下)
Linux内存技术分析(下) 五.内存使用场景 out of memory 的时代过去了吗?no,内存再充足也不可任性使用. 1.内存的使用场景 page 管理 slab(kmalloc.内存池) 用 ...
- 中继TensorRT集成
中继TensorRT集成 介绍 NVIDIA TensorRT是用于优化深度学习推理的库.这种集成将使尽可能多的算子从Relay转移到TensorRT,从而无需调整调度,即可在NVIDIA GPU上提 ...
- 使用js获取checkbox控件在GridView中的第几行
这次的知识点是如何使用js获取checkbox控件所在的是第几行!!! 我们可以使用 JavaScript 中自带的 rowIndex 和 cellIndex 来获取行和列的键值 (从0开始) 这两个 ...
- 打造住院新体验,GVS智慧病房有何独到之处?
3月26-28日,由广东省医院协会主办的"2021第二届广东省医院建设大会暨医院建筑与装备展览会"在广州琶洲国际采购中心盛大举办,来自全国各地的医院代表及企事业单位代表4000余人 ...
- Spring Boot WebFlu-05——WebFlux 中 Thymeleaf 和 MongoDB 实践
第05课:WebFlux 中 Thymeleaf 和 MongoDB 实践 前言 本节内容主要还是总结上面两篇内容的操作,并实现一个复杂查询的小案例,那么没安装 MongoDB 的可以进行下面的安装流 ...
- 代码生成器:IDEA 强大的 Live Templates
前言 Java 开发过程经常需要编写有固定格式的代码,例如说声明一个私有变量,logger或者bean等等.对于这种小范围的代码生成,我们可以利用 IDEA 提供的 Live Templates功能. ...