求助高手,hdu 2028我测试正确,为什么提示wrong answer啊?

求n个数的最小公倍数。最后输入32位整数怎么实现啊?Input输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。Output为每组测试数据输出它们... 求n个数的最小公倍数。
最后输入32位整数怎么实现啊?

Input
输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。

Output
为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。

Sample Input
2 4 6
3 2 5 7

Sample Output
12
70
我的代码:
#include<stdio.h>
main()
{
long n,i,k,t,r,p,max;
long a[100];
while(scanf("%d",&n)!=EOF)
{
max=1;
for(i=1;i<=n;i=i+1)
{
scanf("%d",&a[i]);
max=max*a[i];
}
for(k=1;k<=max;k=k+1)
{
for(t=1;t<=n;t=t+1)
{
if(k%a[t]!=0){p=0;break;}
if(k%a[t]==0) {p=1;r=k;}
}
if(p==1) break;
}
printf("%d\n",r);

}
return 0;
}
展开
 我来答
转瞬F即逝
2012-08-07
知道答主
回答量:23
采纳率:0%
帮助的人:19.3万
展开全部
楼主的算法不怎么好啊,首先,你开的数组太小了,题目中只说了n为正整数,可没说n小于100的哦,还有就是如果数组里的数都相乘的话很容易溢出的,因此也不可行。。虽然测试用例过了,但是那只是几个较特殊的例子(因为n比较小啊),当数组里的元素很大时就会出错的。。
建议用辗转相除法,先定义一个数(如s,令其为1),每输入一个数a,就求出s与a的最小公倍数,将求得的值赋给s,最终就可以得到结果了。
贴下我的代码给你参考下,如果还有不懂的可以问我
#include<stdio.h>
__int64 gys(__int64 a,__int64 b)//a必须要大于b
{
__int64 r=a%b;
while(r!=0)
{
a=b;
b=r;
r=a%b;
}
return b;
}
__int64 gbs(__int64 a,__int64 b)//a必须要大于b
{
__int64 c;
c=a*b/gys(a,b);
return c;
}
int main()
{
__int64 s,a,n,i,temp;
while(scanf("%I64d",&n)!=EOF)
{
s=1;
for(i=0;i<n;i++)
{
scanf("%I64d",&a);
if ( s < a)
{
temp = s;
s = a;
a = temp;
}
s=gbs(s,a);
}
printf("%I64d\n",s);
}
return 0;
}
富港检测技术(东莞)有限公司_
2024-05-27 广告
ISTA3E程序是对相同产品的集合包装的综合模拟性能测试,集合包装件被定义为将一个产品、多个产品或包装件放置在滑板或托盘上,固定在一起或是作为一个单元运输。例如:一台机器由带瓦楞底托的托盘上、瓦楞侧围、顶盖包装,用缠绕膜缠绕在托盘上。用于评... 点击进入详情页
本回答由富港检测技术(东莞)有限公司_提供
只为不再后悔
2012-08-15 · TA获得超过334个赞
知道答主
回答量:117
采纳率:0%
帮助的人:175万
展开全部
你的思路有点没明白,但你的max 有可能会超范围;
说下我的思路:a * b / a 和 b 的最大公约数 = a 和 b 的最小公倍数
a, b, c的最小公倍数 = (a b) 的最小公倍数 和 c 的最小公倍数
我的代码:
#include <stdio.h>
int gcd (int a, int b);
int main ()
{
int i;
int n;
int a, value, temp;
while (scanf ("%d", &n) == 1)
{
value = 1;
for (i = 0; i < n; i ++)
{
scanf ("%d", &a);
temp = gcd (value, a);
value = value / temp * a;
}
printf ("%d\n", value);
}
return 0;
}
int gcd (int a, int b)
{
if (a % b != 0)
{
return gcd (b, a % b);
}
return b;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式