给出两个百分数P%,Q%,求出一个最小数m,使得m*P%-m*Q%之间有一个整数,期中P,Q两位小数
题目很简单就是精度很麻烦,我第一次直接用float来做,卡到5t数据,后来他们说改用double,改了之后到21又卡了
看来精度上需要特殊处理,在这里由于pq只有两位,所以可以先乘以100,最后结果时候需要/10000
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <algorithm>
#define IN 1e-6
using namespace std;
int main()
{
double p,q;
int st,cnt,pp,qq;
while(scanf("%lf%lf",&p,&q)!=EOF)
{
st=1;
p=p*100.0;q=q*100.0;
while(1)
{
pp=st*p;
qq=st*q;
if(qq/10000-pp/10000>=1&&(int)qq%10000!=0)
break;
st++;
}
cout<<st<<endl;
}
}

浙公网安备 33010602011771号