jzoj4919 神炎皇

来源:互联网 发布:rfcn目标检测网络 编辑:程序博客网 时间:2024/05/22 14:30

题意

对于有序正整数对(a,b),求合法数对个数。
一个(a,b)是合法的,当满足以下条件:
a+b<=n,
ab mod (a+b)=0
对于100%的数据n<=100000000000000。

题解

设gcd(a,b)=d,然后
a’=a/d,
b’=b/d.
那么题目要求的是
d(a+b)|abd2
(其中x|y是y mod x=0的意思。)
那么消掉一个d,即求满足
(a+b)|abd的(a,b)对数。
因为有gcd(a,b)=1
所以gcd(ab,a+b)=1

证明:
若xy与x+y有共同质因子p,那么由gcd(x,y)=1得必然有p|xp|y
p|x+y,因为若p|xp|x+y同时满足,那么必定会有p|y,与gcd(x,y)=1矛盾。

所以就是求满足(a+b)|d的对数
那么我们设k=a+b,且要满足kd<=n
因为d>=k,所以易知道k<=n,这样可以考虑枚举k
因为d<=nk,且d是k的倍数,所以有nk2个合法的d的取值。

现在我们来考虑对于每一个k有多少满足要求的a’+b’=k. 且gcd(a’,b’)=1.
又因为由gcd(a'+b',b')=1,可以推出gcd(a',b')=1
且满足gcd(a,b)=1,可以推出gcd(a+b,b)=1.
所以gcd(a+b,b)=1gcd(a,b)=1的充分必要条件。
那么当a′+b′=k时,互质数对a′,b′的个数显然为φ(k)种。证明略去。
欧拉函数使用线性筛筛出即可,以前的博客里有。

3 0
原创粉丝点击