求高手指教 杭电acm-2504题 我的代码如下:

#include<iostream>usingnamespacestd;intmain(){longt=0;cin>>t;while(t--){longa=0,b=0;c... #include<iostream>
using namespace std;
int main()
{
long t=0;
cin>>t;
while(t--)
{
long a=0,b=0;
cin>>a>>b;
long i=2;
a/=b;
while(a%i==0)
{
i++;
}
cout<<b*i<<endl;
}
}

有请高手ac一下,然后能告诉我我的代码出错的地方,谢谢!
链接为:http://acm.hdu.edu.cn/showproblem.php?pid=2504
展开
 我来答
兔子和小强
2012-08-24 · TA获得超过6946个赞
知道大有可为答主
回答量:3332
采纳率:74%
帮助的人:1381万
展开全部
算法设计有错
问题是寻找与a/b互质的最小的数,而不是非a/b因子的最小的数
追问
难道不是一样的吗?!能否举出一个例子,给几个数据了解一下,谢谢!
追答
两个概念明显不一样啊
比如12 2 求c
按你的做法12/2 = 6因子2,3
你会得出4所以c = 4*2 = 8但12 8最大公约数是4
实际上与6互质的最小数是5所以c = 2*5 = 10
灰色110
2012-08-24 · TA获得超过185个赞
知道小有建树答主
回答量:289
采纳率:100%
帮助的人:259万
展开全部
我的ac代码,看下吧
#include<iostream>
#include<cmath>
using namespace std;
int gys(int a,int b)
{
int c;
do
{
c=a%b;
a=b;
b=c;
}while(b!=0);
return a;
}
int main()
{
int a,b,n,c,i;
cin>>n;
for(i=0;i<n;i++)
{
cin>>a>>b;
for(c=1;c<pow(10,6);c++)
{
if(gys(a,c)==b&&c!=b)
break;
}
cout<<c<<endl;
}
return 0;
}
追问
我有ac代码,我就想知道我的思维到底错在哪里了,感觉好纠结!哎!
追答
你选择的那个回答是对的,的确是找互质最小数,而你找的是a/b的因子中的最小数,这题本来就应该逆向回答,它让你求c,那你就穷举法已知c来验证,这样的思维才不容易出错
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
周生008
2012-08-24 · TA获得超过1222个赞
知道小有建树答主
回答量:1329
采纳率:0%
帮助的人:638万
展开全部
main函数没有return
更多追问追答
追问
我晕,你提交对了没?!难道你加了个return之类的就ac了?!
追答
就这一个地方错了,其他不影响运行,你自己不会测?代码是你的,自己去完成
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式