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