C++ 多个数求最小公倍数 10
题目是先输入一个N,N代表之后输入N个数求他们的最小公倍数我自己测试了几个数据是对的。但是交到题库上就说我答案错误了是不是我有什么东西忽略了。求解。这是错误信息;====...
题目是先输入一个N,N代表之后输入N个数求他们的最小公倍数我自己测试了几个数据是对的。 但是交到题库上就说我答案错误了是不是我有什么东西忽略了。 求解。这是错误信息;
=================/data.out
Right:14549535
-----------------
Your:654729075
=================
以下是我写的程序;
#include<iostream>
using namespace std;
int GDC(int a,int b);
int main()
{
int n,i,a[50],r,sum;
while(cin>>n)
{
sum=1;
for(i=0;i<n;i++)
{
cin>>a[i];
sum=sum*a[i];
if(i==1)
{
r=GDC(a[0],a[1]);
}
if(i>1)
{
r=GDC(a[i],r);
}
}
cout<<sum/r<<endl;
}
return 0;
}
int GDC(int a,int b)
{
if(b>a)
{
int temp=a;
a=b;
b=temp;
}
if(a % b == 0)
{
return b;
}
else
{
return GDC(b,a % b);
}
}
<!-- 展开
=================/data.out
Right:14549535
-----------------
Your:654729075
=================
以下是我写的程序;
#include<iostream>
using namespace std;
int GDC(int a,int b);
int main()
{
int n,i,a[50],r,sum;
while(cin>>n)
{
sum=1;
for(i=0;i<n;i++)
{
cin>>a[i];
sum=sum*a[i];
if(i==1)
{
r=GDC(a[0],a[1]);
}
if(i>1)
{
r=GDC(a[i],r);
}
}
cout<<sum/r<<endl;
}
return 0;
}
int GDC(int a,int b)
{
if(b>a)
{
int temp=a;
a=b;
b=temp;
}
if(a % b == 0)
{
return b;
}
else
{
return GDC(b,a % b);
}
}
<!-- 展开
11个回答
展开全部
你是求出最大公约数,再用sum/它
其实你可以直接求最先公倍数的,两个数的最小公倍数的求法就用到了最大公约数
int gbs(int a,int b)
{
return (a*b)/(gys(a,b));
}
这样应该没有错了,你把这个题目的链接给我,我看看能不能过
其实你可以直接求最先公倍数的,两个数的最小公倍数的求法就用到了最大公约数
int gbs(int a,int b)
{
return (a*b)/(gys(a,b));
}
这样应该没有错了,你把这个题目的链接给我,我看看能不能过
更多追问追答
追问
题目上是要多个数啊~
追答
我不知道啊,你把题目的链接给我,我给你看看,或者把原来的题目给我看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的题目是求最小公倍数,而你的方法返回的是最大公约数
int GDC(int a,int b)
{
if(b>a)
{
int temp=a;
a=b;
b=temp;
}
if(a % b == 0)
{
return b;
}
else
{
return GDC(b,a % b);
}
}
int GDC(int a,int b)
{
if(b>a)
{
int temp=a;
a=b;
b=temp;
}
if(a % b == 0)
{
return b;
}
else
{
return GDC(b,a % b);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果n特别大,大于50,无法处理,还有n等于1的时候好像也没有处理
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你就没考虑过是因为数据一直乘导致中间值sum爆了int的范围吗,用long long试一下,或者套大数模板
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
输入是什么呢? 可以手工验证下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询