void-man

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

给出两个百分数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;
    }
}
posted on 2011-05-25 22:38  void-man  阅读(264)  评论(0)    收藏  举报