http://acm.hdu.edu.cn/showproblem.php?pid=2028
应该是比较简单的一道题啊。。。求输入的数的最小公倍数。
先用百度来的(老师教的已经不知道跑哪去了)辗转相除法求出两数的最大公因数,再将两数相乘并除以最大公因数即得到最小公倍数。
一开始我写的代码如下
1 #include<stdio.h> 2 3 int gcd(int a, int b) 4 { 5 if (b == 0) 6 { 7 return a; 8 } 9 return gcd(b, a%b); 10 } 11 int main() 12 { 13 int lop, lop2, a, b, c; 14 while (scanf("%d", &lop)) 15 { 16 if (lop == 0) 17 break; 18 scanf("%d", &a); 19 for (lop2 = 0; lop2 < lop - 1; lop2++) 20 { 21 scanf("%d", &b); 22 c = gcd(a, b); 23 a = a / c*b; 24 } 25 printf("%d ", a); 26 } 27 return 0; 28 }
一提交,超出规定的运行时间整整一秒(1000MS),what the fvck?
结果别人把14行的scanf前面加一个‘~’就AC了
或者改为
while (scanf("%d", &lop)!=EOF)
后来发现题目的要求是
“输入包含多个测试实例”
有这种要求的题目一般用
while(scanf(xxxx) !=EOF)
的形式就行了。太久没做题,TMD忘了。