zoukankan      html  css  js  c++  java
  • 追赶法

    【题目描述】近似整数(Approximation.cpp/c/pas) POJ 1650

    给定一个浮点数A和一个整数L,求在范围[1,L]内的两个整数n和d,使得n/d能近似等于A,且使误差|A-n/d|最小。

    【输入格式】

    第一行为一个浮点数A,第二行为一个整数L。

    【输出格式】

    两个整数n和d。

    【输入样例】

    3.14159265358979

    10000

    【输出样例】

    355 113

    追赶法:不断比较得出minA-n/d),在n/d>Ad++,相反则n++,即基本的追赶问题。

    #include<cstdio>
    #include<cmath>
    using namespace std;
    int main()
    {
    freopen("Approximation.in","r",stdin);
    freopen("Approximation.out","w",stdout);
       int n=1,d=1;
       double a;
       int l;
       int ansa,ansb;
       double anssum=999999999.9999999;
       double sum;
       scanf("%lf%d",&a,&l);
       while(n<=l&&d<=l){
        sum=double(n*1.0/(d*1.0));
        if(fabs(a-sum)<anssum) {
                ansa=n,ansb=d;
                anssum=fabs(a-sum);
        }
        if(sum>a) d++;
        else n++;
       }
       printf("%d %d ",ansa,ansb);
        return 0;
    }

  • 相关阅读:
    Java创建和解析Json对象
    Tyche 2191 WYF的递推式
    Tyche 2147 旅行
    Tyche 2317 Color
    洛谷 P1092 虫食算
    洛谷 P3951 小凯的疑惑
    BZOJ 1800 [Ahoi2009]fly 飞行棋
    BZOJ 1034 [ZJOI2008]泡泡堂BNB
    洛谷 P2151 [SDOI2009]HH去散步
    Android开发环境配置
  • 原文地址:https://www.cnblogs.com/lmjer/p/7892558.html
Copyright © 2011-2022 走看看