hdu-4497 GCD and LCM
生活随笔
收集整理的這篇文章主要介紹了
hdu-4497 GCD and LCM
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目鏈接:
http://acm.hdu.edu.cn/showproblem.php?pid=4497
題目大意:
給出三個數的gcd和lcm,求出這三個數有多少種可能性
解題思路:
設lcm / gcd =?(p1^r1)*(p2^r2)*(p3^r3)…(pm^rm)
設三個數為x, y, z;
有:
x=(p1^i1)*(p2^i2)*(p3^i3)…(pm^im)
y=(p1^j1)*(p2^j2)*(p3^j3)…(pm^jm)
z=(p1^k1)*(p2^k2)*(p3^k3)…(pm^km)
對于某個r,i、j、k里面一定有一個是r,并且一定有一個是0,所以i,j,k有一下3種情況:
r 0 0 ,有C(3,1)種
r 0 r ,有C(3,1)種
r 0 1~r-1 ,有(r-1)*A(3,3)種
所以一共是6*r種。
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 ll n, m; 5 6 int main() 7 { 8 int T; 9 cin >> T; 10 while(T--) 11 { 12 cin >> m >> n; 13 if(n % m) 14 { 15 cout<<"0"<<endl; 16 continue; 17 } 18 n /= m; 19 ll ans = 1; 20 for(ll i = 2; i * i <= n; i++) 21 { 22 if(n % i == 0) 23 { 24 int cnt = 0; 25 while(n % i == 0) 26 { 27 cnt++; 28 n /= i; 29 } 30 ans *= 6; 31 ans *= cnt; 32 } 33 } 34 if(n != 1) 35 ans *= 6; 36 cout<<ans<<endl; 37 } 38 return 0; 39 }?
轉載于:https://www.cnblogs.com/fzl194/p/9032267.html
總結
以上是生活随笔為你收集整理的hdu-4497 GCD and LCM的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 笔记 之 sqlalche
- 下一篇: codevs1217 借教室 题解