Educational Codeforces Round 81 (Rated for Div. 2) D. Same GCDs

time limit per test2 seconds
memory limit per test256 megabytes
inputstandard input
outputstandard output

You are given two integers a and m. Calculate the number of integers x such that 0≤x

Note: gcd(a,b) is the greatest common divisor of a and b.

Input
The first line contains the single integer T (1≤T≤50) — the number of test cases.

Next T lines contain test cases — one per line. Each line contains two integers a and m (1≤a

Output
Print T integers — one per test case. For each test case print the number of appropriate x-s.

Example
inputCopy

3
4 9
5 10
42 9999999967
outputCopy
6
1
9999999966
Note
In the first test case appropriate x-s are [0,1,3,4,6,7].
In the second test case the only appropriate x is 0.

直接猜结论最后球的是 phi(m/gcd(a,m))
最后输出欧拉函数求得互质个数
(但是欧拉打表会re不晓得为什么

#include
using namespace std;
typedef long long LL;
LL aa,bb;
LL n,ans;
int main() {
    cin>>t;
    while(t--) {
        cin>>aa>>bb;
        n=bb/gcd(aa,bb);
        ans=n;
        for(LL i=2; i*i<=n; ++i) {
            if(n%i==0) {
                while(n%i==0)
                    n=n/i;
                ans=ans/i*(i-1);
            }
        }
        if(n>1)  ans=ans/n*(n-1);
        cout<<ans<<endl;
    }
    return 0;
}


你可能感兴趣的:(CodeForces)