注册 登录
编程论坛 新人交流区

c++ problem

小小唐 发布于 2007-10-27 21:18, 435 次点击

求最小公倍数


也许你已经会了求2个数字最小公倍数的方法,但是如果求多个数字的最小公倍数,你又能找到办法吗?

Input 多组,每一组首先是 一个n,然后是n个数字.

Output 求出每组n个数字的最小公倍数,输入数据保证结果不超过2^30

Sample Input
5
3 5 7 11 9

Sample Output 3465



#include"iostream.h"
int main()
{
int n,i,t,r,c;
long int p1,p2;
while(cin>>n)
{
cin>>p1;
for(i=1;i<n;i++)
{ cin>>p2;
c=p1*p2;
if (p1<p2)
{
t=p1;
p1=p2;
p2=t;
}
while(p2!=0)
{
r=p1%p2;
p1=p2;
p2=r;
}
p2=c/p1;
p1=p2;
}
cout<<p1<<endl;
}
return 0;
}

这是我自己编的一个程序,试了几组数据运行结果正确.为什么提交系统还是会显示答案错误?

帮忙看一下,哪里不对!






3 回复
#2
chuxuezhe172007-10-27 22:50
是不是你的输出结果达不到他那么大数的要求?
2^30毕竟不小
#3
小小唐2007-10-28 18:59
应该不是这样吧,long int 的范围是-2^31-1~~2^31-1,能达到2^30的要求!
#4
小小唐2007-11-02 12:33

已经解决,是因为c=p1*p2;超出了范围.应该先除后乘.

1