1079 Ratio

校内练习赛做的,数学题,枚举分母

注意要同时计算取上整和下整

  1. //4452592_AC_0MS_292K
  2. /**********************************************************************
  3. *       Online Judge   : POJ
  4. *       Problem Title  : Ratio
  5. *       ID             : 1079
  6. *       Date           : 12/4/2008
  7. *       Time           : 14:43:8
  8. *       Computer Name  : EVERLASTING-PC
  9. ***********************************************************************/
  10. #include<iostream>
  11. #include<math.h>
  12. using namespace std;
  13. double n,w,w1,w2;
  14. int a,b,zi,deno,d1,d2;
  15. bool first;
  16. int main()
  17. {
  18.     //freopen("in_1079.txt","r",stdin);
  19.     first=true;
  20.     while(cin>>a>>b)
  21.     {
  22.         if (first)
  23.         {
  24.             first=false;
  25.         }
  26.         else
  27.         {
  28.             cout<<endl;
  29.         }
  30.         n=(double)a/b;
  31.         for(deno=1;deno<=b;++deno)
  32.         {
  33.             d1=(int)floor(n*(double)deno);
  34.             d2=(int)ceil(n*(double)deno);
  35.             w1=fabs((double)d1/(double)deno-(double)n);
  36.             w2=fabs((double)d2/(double)deno-(double)n);
  37.             if(w1<w2)
  38.             {
  39.                 if(deno==1)
  40.                 {
  41.                     w=w1;
  42.                     cout<<d1<<'/'<<deno<<endl;
  43.                 }
  44.                 else
  45.                 {
  46.                     if (w>w1)
  47.                     {
  48.                         cout<<d1<<'/'<<deno<<endl;
  49.                         w=w1;
  50.                     }
  51.                 }
  52.             }
  53.             else
  54.             {
  55.                 if(deno==1)
  56.                 {
  57.                     w=w2;
  58.                     cout<<d2<<'/'<<deno<<endl;
  59.                 }
  60.                 else
  61.                 {
  62.                     if (w>w2)
  63.                     {
  64.                         cout<<d2<<'/'<<deno<<endl;
  65.                         w=w2;
  66.                     }
  67.                 }
  68.             }
  69.         }
  70.     }
  71.     return 0;
  72. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值