POJ 1905 Expanding Rods解題報告(二分)
828 ワード
熱膨張後の弧の高さを求めます.
問題解決報告:二分は考えやすいが、数学の公式感覚こそ難点だ.実は私はずっと次のコードの精度の問題を疑っています.長さの変化が非常に小さい場合,rは無限大になり,精度に影響を及ぼすに違いない.コードが多すぎて、私は何も言わなかった......
問題解決報告:二分は考えやすいが、数学の公式感覚こそ難点だ.実は私はずっと次のコードの精度の問題を疑っています.長さの変化が非常に小さい場合,rは無限大になり,精度に影響を及ぼすに違いない.コードが多すぎて、私は何も言わなかった......
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
const double eps=1e-5;
int main()
{
double L,h,c;
double s;
while(scanf("%lf%lf%lf",&L,&h,&c))
{
if(L<0 && h<0 && c<0)
break;
s=L*(1+h*c);
L/=2;
double l=0;
double r=L;
while(r-l>eps)
{
double mid=(l+r)/2;
double rr=(L*L+mid*mid)/(2*mid);
if(2*rr*asin(L/rr)<s)
l=mid;
else
r=mid;
}
printf("%.3lf
",l);
}
}