题意:
问你 gcd(a,m)=gcd(a+x,m)的话,有多少 x满足这种情况?
其中 1≤a,m≤1010, 0≤x<m
题解:
令 k=a+x
令 d=gcd(a,m)=gcd(k,m)
令 a′=a/d,m′=m/d,k′=k/d
那么可以有 gcd(a′,m′)=gcd(k′,m′)=1
由欧几里德算法:
gcd(k′,m′)=gcd(m′,k′%m′)=1
由于 0≤x<m,a≤k≤a+m
a′≤k′<a′+m′
故 k′%m′∈[a′%m′ a′%m′) 即从 0到 m′−1.
即问 gcd(m′,t)==1的个数, t∈[0,m′−1]
gcd(m′,0)=m′
当 t=1,答案为 1
否则答案为 [1,m′−1]中,与 m′互质的数的个数
那么显然就是欧拉函数裸题了。