hdu 4497 已知三个数的gcd和lcm,求满足这个条件的三个的组数
来源:互联网 发布:知乐的小说东汉霸王传 编辑:程序博客网 时间:2024/04/30 13:05
GCD and LCM
题意:已知三个数的gcd和lcm,求满足这个条件的三个的组数,顺序可以不同
思路:gcd(x,y,z) == G, lcm(x,y,z) == L,则gcd( x', y',z') == 1,lcm(x',y',z') == L/G ,其中x' = x /G,y' = y /G ,z' = z / G;
这样的话对t = L/G 这个数进行素因子分解,t = p1^t1 * p2^t2 * p3^t3 ..... * pn ^tn;
满足上面条件的x,y,z一定为这样的形式。
x' = p1^i1 * p2^i2 *```* pn^in.
y' = p1^j1 * p2^j2 * ```*pn^jn.
z' = p1^k1 * p2^k2 * ```*pn^kn.
为了满足上面的条件,对于p1,一定有max(i1,j1,k1) = t1.min(i1,j1,k1) =0;因为gcd(p1^i1,p1^j1,p1^k1)== 1 == p^0, => min(i1,j1,k1) == 0;
同理:lcm(p1^i1,p1^j1,p1^k1) == p1^t1 => max(i1,j1,k1) == t1;那么的话三个数中至少有一个0,和一个t1,第三个数则是在[0, t1]这个区间里的一个数;
则当选定第一个数为0,第二个数为t1时,第三个数可以为【0,t1】,又由于有顺序的,只有(0,t1,t1) 和(0,t1,0)这两种情形根据顺序只能产生三种结果,其他的第三个数在在【1,n-1】这个区间由于三个数都不一样,一定能产生6种,所以最后产生了6*(t1-1)+3*2 = 6*t1种,根据乘法原理以及关于素数分解的唯一性,反过来,素数组合必然也是唯一的数,一共有6*t1 * 6*t2 *`````*6*tn种选法。
接下来就是代码了:
#include<bits/stdc++.h>using namespace std;typedef unsigned long long ll;ll depart(ll n){ ll ans = 1; for(int i = 2; i * i <= n; i ++) { if(n % i == 0) { int t = 0; while(n % i == 0) { t ++; n /= i; } ans *= t * 6; } } if(n > 1) ans *= 6; return ans;}int main(){ int Tcase; scanf("%d",&Tcase); for(int ii = 1; ii <= Tcase; ii ++) { ll n,m; scanf("%I64d%I64d",&n,&m); if(m % n) { cout << 0 << endl; continue; } ll t = m /n; cout << depart(t) << endl; } return 0;}
- hdu 4497 已知三个数的gcd和lcm,求满足这个条件的三个的组数
- 从三个数组中选择满足条件的三个数
- 快速寻找满足条件的两个数或三个数
- 快速寻找满足条件的两/三个数
- 利用条件表达式求三个数的最大值和最小值
- 三个数gcd与lcm
- 求三个数的平均数
- 求三个数的最大值
- 求三个数的最小公倍数
- 求三个数的最大值
- 求三个数的最小公倍数
- 求三个数的最小公倍数
- 编程之美2.12——快速寻找满足条件的两个数或三个数
- 编程之美1.12 —— 寻找满足条件的两个数、三个数
- 编程之美——快速寻找满足条件的两个数或三个数
- 编程之美2.12——快速寻找满足条件的两个数或三个数
- 编程之美2.12——快速寻找满足条件的两个数或三个数
- HDU-A Mathematical Curiosity-求满足条件的数对数
- Linq动态拼接条件
- Android提升开发效率工具
- javascrip笔记-20170214
- Qt学习之路三(模态和非模态对话框)
- 深入 Promise(一)——Promise 实现详解
- hdu 4497 已知三个数的gcd和lcm,求满足这个条件的三个的组数
- 工具介绍
- 三分钟了解Activity工作流
- Spark伪分布式环境搭建
- 雅思考试为您揭秘美国大学最新排名中的玄机
- Android中Service的onStartCommand使用和遇到的问题
- Android Studio-----1、创建Android项目
- 组件方式开发 情人节表白App,给你情人不一样的惊喜!
- InsetDrawable 内嵌式Drawable使用详解