杭电oj上的一道题,为何最后输出结果需要-1才正确?

#include<iostream>#include<algorithm>usingnamespacestd;inta[100];intmain(){intn,j,s,s... #include <iostream>
#include <algorithm>
using namespace std;
int a[100];
int main()
{
int n,j,s,s3;
double s2;
while (cin>>n)
{
j=0;
for (int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
for (s=a[0];j==0;s++)
{
j=1;
for (int t=0;t<n;t++)
{
s2=1.0*s/a[t];
s3=s/a[t];
if (s3!=s2)
{
j=0;
break;
}
}
}
cout<<s<<endl;
}
return 0;
}
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2028
展开
 我来答
martinblack954
2014-10-14 · TA获得超过1490个赞
知道小有建树答主
回答量:591
采纳率:0%
帮助的人:236万
展开全部
这个题目不是求所有数的最小公倍数么?
为何中间是 s3!=s2 是退出呢?
不是在找一个可以整除 a[t] 的数么?
话说,这样做的话会超时的
追问
s3!(整形)=s2(浮点)代表了s可以整除a[t],数组不过100所以不怕超时,这道题其实我过了,不过最后输出要s-1,我是没弄懂为什么s会比正解大1,帮忙看看,谢谢
追答
因为break了t的那个循环之后,会先+1,再判断j是否为0
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式