题意:给定一根劲度系数为C的细杆,将细杆两段固定在墙壁上,升温使细杆伸长,用二分法求伸长后细杆的弧顶距伸长前的高度h
思路:找到圆弧下方的圆心O,设圆的半径为R,圆弧所对的圆心角为2θ,
则可由:
得:
#include <iostream>
#include <iomanip>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <set>
#include <map>
#include <list>
#include <stack>
#include <deque>
#include <queue>
#include <vector>
#include <algorithm>
#include <functional>
#define debug(x) cout << "--------------> " << x << endl
using namespace std;
const double PI = acos(-1.0);
const double eps = 1e-7;
const long long INF = 0x7fffffff;
const long long MOD = 1000000007;
double l, n , c, r;
int main()
{
while(scanf("%lf%lf%lf", &l, &n, &c) && (l >= 0 && n >= 0 && c >= 0))
{
double ll = (1 + n*c) * l;
double L = 0, R = ll, mid;
while(R - L >= eps)
{
mid = (L + R) / 2.0;
if(ll - (l*l + 4*mid*mid)/(4*mid)*asin(4*l*mid/(l*l+4*mid*mid)) >= eps)
L = mid + eps;
else
R = mid - eps;
}
printf("%.3f\n", mid);
}
return 0;
}