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