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;
    }

  • 相关阅读:
    MVC Form
    The way to learn english
    Test FastThree
    C#中Trim()、TrimStart()、TrimEnd()的用法
    c# Dictionary 简介
    visual studio快捷键大全
    ASP.NET MVC 中 ActionResult
    MVC4中使用 Ninject
    MVC Chapter 12 Overview of MVC Projects
    ASP.NET Razor
  • 原文地址:https://www.cnblogs.com/lmjer/p/7892558.html
Copyright © 2011-2022 走看看