HDU 2504 又见GCD
来源:互联网 发布:五常大米价格 知乎 编辑:程序博客网 时间:2024/05/16 05:12
又见GCD
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 14796 Accepted Submission(s): 6190
Problem Description
有三个正整数a,b,c(0<a,b,c<10^6),其中c不等于b。若a和c的最大公约数为b,现已知a和b,求满足条件的最小的c。
Input
第一行输入一个n,表示有n组测试数据,接下来的n行,每行输入两个正整数a,b。
Output
输出对应的c,每组测试数据占一行。
Sample Input
26 212 4
Sample Output
48
分析:
方法一:
c=b^i,让d=a/b,只需要判断 i 和 d 互质即可。
判断互质需要计算gcd( i , d )==1;
代码如下:
#include <stdio.h>int gcd(int a,int b){int temp;if(a<b){temp=a;a=b;b=temp;}while(a%b){temp=b;b=a%b;a=temp;}return b;}int main(){int T;int a,b,d,i;scanf("%d",&T);while(T--){scanf("%d %d",&a,&b);d=a/b;for(i=2;1;i++){if(gcd(d,i)==1){printf("%d\n",i*b);break;}}}return 0;}
方法二:
因为c=b^i ,暴力找出gcd(c , a)==b即可
代码如下:
#include <stdio.h>int gcd(int a,int b){ int temp; if(a<b) { temp=a;a=b;b=temp; } while(a%b) { temp=b; b=a%b; a=temp; } return b;}int main(){ int T; int a,b,c,d,i; scanf("%d",&T); while(T--) { scanf("%d %d",&a,&b); c=2*b; while(gcd(a,c)!=b) { c+=b; } printf("%d\n",c); } return 0;}
0 0
- hdu 2504 又见gcd(gcd)
- HDU 2504 又见GCD(gcd)
- HDU 2504 又见GCD【GCD】
- 又见GCD(GCD)【HDU】-2504
- HDU 2504 又见GCD
- hdu 2504 又见GCD
- HDU-2504 又见GCD
- HDU 2504 又见GCD
- hdu 2504 又见GCD
- hdu-2504-又见GCD
- hdu 2504 又见GCD
- HDU-2504 又见GCD
- HDU 2504 又见GCD
- HDU 2504 又见GCD
- HDU 2504 又见GCD
- hdu 2504 又见GCD
- hdu-2504-又见GCD
- HDU 2504 又见GCD
- Xcode7.0.1 / OS X 10.11.1 提交不了 AppStore 的解决方案
- dubbo实例
- IOS等比率缩放图片 工具function
- Android的AsyncTask原理和配置
- 如何使用sax解析xml文档
- HDU 2504 又见GCD
- Android中图像变换Matrix的原理应用
- hdu2524(递推)
- java bean基础
- [JZOJ3578] Adriatic
- 设置手机铃声
- ToolBar学习
- Hibernate与Jpa的关系,终于弄懂
- hdu 5547 Sudoku