题意:给出直角三角形两条直角边a,b,求这两条边的和比斜边c多了多长,结果要求精度<1e-6.

这有什么好说的?用二分而不是sqrt()就完事了(

#include<bits/stdc++.h>
using namespace std;
int main()
{
    double a,b,c;
    cin>>a>>b;
    double lef=0,rig=a+b;
    while(lef+(1e-9)<rig)
    {
        double mid=(lef+rig)/2;
        if(a*a+b*b>mid*mid)lef=mid;
        else rig=mid;
    }
    printf("%7lf",a+b-lef);
    return 0;
}