实数二分

当需要两个值尽量相等时,可以假设fabs(x-y)< 1e-8

#include<bits/stdc++.h>
using namespace std;

int main()
{
    double s,s1,s2,v1,v2,t1,t2,p;
    double a,b;
    cin >> s >> v1 >> v2;
    s1=0;
    s2=s;
    do
    {
        p=(s1+s2)/2.0;
        a=p/v2;
        b=(p-a*v1)/(v1+v2);
        t1=a+(s-p)/v1;
        t2=a+b+(s-(a+b)*v1)/v2;
        if(t1<t2)
          s2=p;
        else
          s1=p;
    }
    while(fabs(t1-t2)>1e-8);
    printf("%.6lf",t1);
    return 0;
}
posted @ 2025-01-18 21:56  _窗帘  阅读(15)  评论(0)    收藏  举报