题意:给出直角三角形两条直角边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;
}


京公网安备 11010502036488号