ZOJ.1577 GCD & LCM【水,暴力】 2015/09/22
阿新 • • 發佈:2019-01-26
Given x and y (2 <= x <= 100,000, 2 <= y <= 1,000,000), you are to count the number of p and q such that:
1) p and q are positive integers;
2) GCD(p, q) = x;
3) LCM(p, q) = y.
Input
x and y, one line for each test.
Output
Number of pairs of p and q.
Sample Input
3 60
Sample Output
4
Author: ZHOU, QiangSource: ZOJ Monthly, April 2003
求最大公約數與最小公倍數為x和y的p與q的組合有多少對,只要求出1~y/x內互質的書有多少對即可,WA了一次,忘了考慮y不能整除x的情況
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; int gcd(int a,int b){ return b?gcd(b,a%b):a; } int main(){ int x,y; while( ~scanf("%d %d",&x,&y) ){ if( y % x ){ printf("0\n"); continue; } int flag = y / x,ret=0; for( int i = 1 ; i <= flag ; ++i ){ if( flag % i == 0 ){ if( gcd(i,flag/i) == 1 ) ret++; } } printf("%d\n",ret); } return 0; }