加载中…
个人资料
abentu
abentu
  • 博客等级:
  • 博客积分:0
  • 博客访问:15,882
  • 关注人气:4
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

poj1650-Integer Approximation

(2010-07-15 13:21:31)
标签:

杂谈

  这道题可能本来是考察用连分数构造逼近分数的,但是有一个极其简单的捷径,只要枚举一下分母乘一下就好了,水题~~

 

代码:


#include "stdio.h"
#include "math.h"
#include "memory.h"
#define L 100010
int l,n,d;
double a;

int main()
{
 freopen("3.txt","r",stdin);

 double min;
 int i,n1,d1;
 while (scanf("%lf%d",&a,&l) != EOF && l >= 1 && l <= 100000)
 {
  min = 100;
  for (i = 1;i <= l;i ++)
  {
   d1 = i;
   n1 = (int)(i * a + 0.5);
   if (n1 < 1)
    n1 = 1;
   if (n1 > l)
    n1 = l;
   if (fabs(a - (n1 + 0.0) / (d1 + 0.0)) < min)
   {
    d = d1;
    n = n1;
    min = fabs(a - (n1 + 0.0) / (d1 + 0.0));
   }
  }
  printf("%d %d\n",n,d);
 }

 return 0;
}

 

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有