#2028 Lowest Common Multiple Plus

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忘了。

原文地址:https://www.cnblogs.com/makejeffer/p/4802169.html