【信息学竞赛的题目】

来源:百度知道 编辑:UC知道 时间:2024/05/16 14:47:58
http://www.vijos.cn/Problem_Show.asp?id=1041
总是有一组数据不对,为什么?

#include<iostream>
using namespace std;
int main()
{
double p,q;
int x,y,flag=0;
cin>>p>>q;
for(y=1;;y++)
{
for(x=1;x<y;x++)
if(y>100.0*x/q&&y<100.0*x/p)
{
cout<<y<<endl;
flag=1;
break;
}
if(flag==1)
break;
}
return 0;
}

应该是计算精度的问题
我把改成
int main()
{
double p,q;
int x,y,flag=0;
cin>>p>>q;
for(y=1;;y++)
{
for(x=1;x<y;x++)
if(y*(int)(q*100)>10000*x&&y*(int)(p*100)<10000*x)
{
cout<<y<<endl;
flag=1;
break;
}
if(flag==1)
break;
}
return 0;
}
那组数据就对了
但是最后一组计算超时
最好改成一层的循环