View Code
1 #include<stdio.h> 2 int gcd(int n,int m) 3 { 4 return 0==m?n:gcd(m,n%m); 5 } 6 int main() 7 { 8 int num,a,b,c; 9 scanf("%d",&num); 10 while(num--) 11 { 12 scanf("%d%d",&a,&c); 13 int i; 14 for(i=2;;i++) 15 { 16 b=c*i; 17 if((gcd(a,b)==c)&&a!=b) 18 break; 19 } 20 printf("%d\n",b); 21 } 22 return 0; 23 }
其实每一道题都会给我一些启示吧
算法最重要
自己一开始穷举所有情况 if else if else最后还是wrong answer .....
遗漏或者错误在所难免
所以自己告诉自己,做题不用太急切.... 多考虑一种算法,也许或者只是一点小小的技巧 稍微多的分析一下。嗯
另外自己对算法时间估计不够准确
循环gcd时间不是太多 因为一般的数都会与2 3 5等素质
并且这个gcd函数对(int n,int m) 没有大小限制的
就算输入一个2 3 4 5的公倍数也不算太大哪 太大就超过范围了