GCD and LCM
GCD and LCM
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65535/65535K (Java/Other)
Total Submission(s) : 1 Accepted Submission(s) : 1
Problem Description
Given two positive integers G and L, could you tell me how many solutions of (x, y, z) there are, satisfying that gcd(x, y, z) = G and lcm(x, y, z) = L? Note, gcd(x, y, z) means the greatest common divisor of x, y and z, while lcm(x, y, z) means the least common multiple of x, y and z. Note 2, (1, 2, 3) and (1, 3, 2) are two different solutions.
Input
First line comes an integer T (T <= 12), telling the number of test cases. The next T lines, each contains two positive 32-bit signed integers, G and L. It’s guaranteed that each answer will fit in a 32-bit signed integer.
Output
For each test case, print one line with the number of solutions satisfying the conditions above.
Sample Input
2
6 72
7 33
Sample Output
72
0
Source
2013 ACM-ICPC吉林通化全国邀请赛——题目重现
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <stdio.h> 2 #include <stdlib.h> 3 long long Find(int A,int B) 4 { 5 long long i,N=B/A,SIGN=1,sign; 6 if(B%A!=0)return 0; 7 for(i=2;i*i<=N;i+=2) 8 { 9 sign=0; 10 while(N%i==0) 11 { 12 N/=i; 13 sign++; 14 } 15 if(sign!=0)SIGN*=6*sign; 16 if(i==2) 17 i--; 18 } 19 if(N>1)SIGN*=6; 20 return SIGN; 21 22 } 23 24 int main() 25 { 26 int T,A,B; 27 scanf("%d",&T); 28 while(T--&&scanf("%d%d",&A,&B)!=EOF) 29 printf("%I64d\n",Find(A,B)); 30 return 0; 31 }
转载请备注:
**************************************
* 作者: Wurq
* 博客: https://www.cnblogs.com/Wurq/
* Gitee: https://gitee.com/wurq
**************************************
**************************************
* 作者: Wurq
* 博客: https://www.cnblogs.com/Wurq/
* Gitee: https://gitee.com/wurq
**************************************