HDU 4497 GCD and LCM
2015-08-05 14:42
288 查看
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
Sample Output
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#include <iostream> #include <stdio.h> using namespace std; #define MAXN 50000 int arrp[MAXN]; int vis[MAXN]; int k; void get_prime() { k=0; vis[2]=0; for(int i=2;i<MAXN;i++) { if(!vis[i]) { arrp[k++]=i; for(int j=i;j<MAXN;j+=i) vis[j]=1; } } } int main() { //freopen("data.in","r",stdin); get_prime(); int T,g,l; scanf("%d",&T); while(T--) { scanf("%d%d",&g,&l); if(l%g) { printf("0\n"); continue; } int tmp=l/g; int cnt,ans=1; for(int i=0;i<k;i++) { if(arrp[i]*arrp[i]>tmp) break; if(tmp%arrp[i]!=0) continue; cnt=0; while(tmp%arrp[i]==0) { tmp/=arrp[i]; cnt++; } ans*=(3+3+6*(cnt-1)); ///上面三个数分别表示: ///只有一个含质该因子;有两个含该因子且均是arrp[i]^cnt;有两个含该因子且只有一个是arrp[i]^cnt,另一个有cnt-1种情况 } if(tmp>1) ans*=(3+3+6*(1-1)); printf("%d\n",ans); } return 0; }
相关文章推荐
- Intel Threading BuildingBlocks(Intel TBB)介绍
- iSight集成Adams/View:Adams组件
- VIM 操作快捷键
- 解决jquery操作checkbox全选全不选无法勾选问题
- 前端各种技术简介
- JS使用parseInt解析数字实现求和的方法
- io.js v3.0.0发布
- java中的StringBuffer类
- 小心别让圆角成了你列表的帧数杀手
- 大讲台谈hive(初篇)
- Android 谷歌 开源 通信框架 VOLLEY(五)——源码架构设计
- 如何通过ildasm/ilasm修改assembly的IL代码
- eclipse 下找不到或无法加载主类的解决办法[转]
- POJ 1163 The Triangle
- java打印的说明文档
- C语言-不同类型数据间的混合运算
- whoami: cannot find name for user ID xxxx
- 深入解析Android的自定义布局
- IOS中的block和retain cycle
- HDU 4496 D-City