2024-03-28

news/发布时间2024/5/1 5:21:15

2024-03-28

\({\color{Red}\Large到成都集训来了!}\)

晚上自习

YY的GCD

\({\color{Chocolate}Problem}\)
\(i\in[1,n],j\in[1,m] \ \ \ m,n\le10^7\)\(T\le10^4\) 组询问,求 \(\gcd(i,j)\) 是素数的 \((i,j)\) 对数

\({\color{Chocolate}Solution}\)

\[\begin{align*} ans&=\sum_{p\in primes}\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)=p]\newline &=\sum_{p\in primes}\sum_{i=1}^{\left\lfloor\frac{n}{p}\right\rfloor}\sum_{j=1}^{\left\lfloor\frac{m}{p}\right\rfloor}[\gcd(i,j)=1] \end{align*} \]

莫比乌斯函数有一个小性质

\[\sum_{d\mid x}\mu(d)=[x=1] \]

\[\therefore[gcd(i,j)=1]=\sum_{d\mid\gcd(i,j)}\mu(d) \]

\[\therefore ans=\sum_{p\in primes}\sum_{i=1}^{\left\lfloor\frac{n}{p}\right\rfloor}\sum_{j=1}^{\left\lfloor\frac{m}{p}\right\rfloor}\sum_{d\mid\gcd(i,j)}\mu(d) \]

考虑改变求和顺序
先枚举 \(k=\gcd(i,j)\),则 \(i,j\) 均是 \(k\) 的倍数

\[ans=\sum_{p\in primes}\sum_{k=1}^{\min(\left\lfloor\frac{n}{p}\right\rfloor,\left\lfloor\frac{m}{p}\right\rfloor)}\sum_{d\mid k}\mu(d)\times\left\lfloor\frac{n}{pk}\right\rfloor\times\left\lfloor\frac{m}{pk}\right\rfloor \]

接下来(按照题解说的)是常见的变换方式
\(t=pk\)

\[\begin{align*} ans&=\sum_{p\in primes}\sum_{k=1}^{\min(\left\lfloor\frac{n}{p}\right\rfloor,\left\lfloor\frac{m}{p}\right\rfloor)}\sum_{d\mid k}\mu(d)\times\left\lfloor\frac{n}{t}\right\rfloor\times\left\lfloor\frac{m}{t}\right\rfloor\newline &=\sum_{t=1}^{\min(n,m)}\left\lfloor\frac{n}{t}\right\rfloor\times\left\lfloor\frac{m}{t}\right\rfloor\sum_{p\in primes,p\mid t} \mu(\frac{t}{p}) \end{align*} \]

\(k\) 的约数不用再枚举的原因是:\(t\) 实际上枚举的是 \(p\)\(k\)的所有约数 的乘积,已经考虑过了

最后面的和式可以在线性筛的时候预处理
剩下的数论分块

时间复杂度 \(O(n+T\sqrt{n})\)

\({\color{Chocolate}Code}\)

#include<iostream>
#include<cstring>
#include<algorithm>using namespace std;typedef long long ll;const int N=1e7+100;ll n,m;int primes[N],cntp;
bool st[N];
int mu[N];
ll sm[N];void init_mu(int mx) {mu[1]=1;for(int i=2;i<=mx;i++) {if(!st[i]) primes[++cntp]=i,mu[i]=-1;for(int j=1;i*primes[j]<=mx;j++) {st[i*primes[j]]=true;if(i%primes[j]==0) {mu[i*primes[j]]=0;break;}mu[i*primes[j]]=-mu[i]; }}for(int j=1;j<=cntp;j++)for(int i=1;i*primes[j]<=mx;i++)sm[i*primes[j]]+=mu[i]*1ll;for(int i=1;i<=mx;i++) sm[i]+=sm[i-1];
}int main() {init_mu(1e7+10);int T;scanf("%d",&T);while(T--) {scanf("%lld%lld",&n,&m);if(n>m) swap(n,m);ll lft=1,rgh,ans=0;while(lft<=n) {rgh=min(n,min(n/(n/lft),m/(m/lft)));ans+=(sm[rgh]-sm[lft-1])*(n/lft)*(m/lft);lft=rgh+1;}printf("%lld\n",ans); }return 0;
} 

GCD SUM

做完前边几个题,这个就很简单了

不写解析了

完蛋还没写完但是要回去了


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/35045480.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

人工智能复试考察要点

什么是人工智能 人工智能是计算机科学的一个重要分支. 也是一门正在发展中的综合性前沿学科,它是由计算机科学、控制论、信息论、神经生理学、哲学、语言学等多种学科相互渗透而发展起来的,目前正处于发展阶段尚未形成完整 休系。 人工智能三大学派——符号、连接、行为 合取…

方差与标准差

标准差,反映了一组数与平均值的紧密关系。 举例,有一组数,4,5,9,11,16。 第一步:求出平均值。 (4+5+9+11+16)5=9 第二步:求出各数与平均数的差 分别为,-5,-4,0,2,7 第三步:把差平方一下(目的就是转成正数) 结果为,25,16,0,4,49 第四步:把平方后的数求一个平均…

支持MacOS苹果操作系统的网卡你用过吗?

Marvell AQC113以太网控制器支持苹果操作系统(MacOS),进一步扩展搭载了AQC113设备的应用领域。 众所周知,苹果操作系统应用生态完善,是业内备受瞩目的巨头级操作系统,其应用领域覆盖了游戏、社交、娱乐、工具,甚至NAS存储、工作站、家用PC及其他嵌入式应用等。 Marvell …

etcd与redis之间的区别

一、简介 我们之前用了redis,那么好用为什么还要来用etcd呢,这里就来和大家聊聊为什么有的业务场景选择etcd。 分析:在当今的分布式系统中,数据存储及一致性相当重要。etcd和redis都是我们最受欢迎的开源分布式数据存储的解决方案,但是他们有着不同的试用场景。下面我个人对…

[转帖]比黄金更贵的显卡,疯狂H100

https://zhuanlan.zhihu.com/p/654361974 华尔街和硅谷联袂奉上了一件震撼业界的大事:让一家创业公司拿到23亿美元的债务融资,抵押物则是当前全球最硬的通货——H100显卡。 这个大事件的主角叫做CoreWeave,主营业务是AI私有云服务,简单说就是通过搭建拥有大量GPU算力的数据…

BBS项目创作流程

BBS项目创作流程 【零】完整文件gitee仓库BBS/BBS1.0/BlogBasedSystem Lea4ning/DjangoObject - 码云 - 开源中国 (gitee.com)【一】项目基本配置 【1】所需模块 asgiref==3.7.2 beautifulsoup4==4.12.3 certifi==2024.2.2 charset-normalizer==3.3.2 Django==3.2.12 fake-use…