码迷,mamicode.com
首页 > 其他好文 > 详细

POJ 1905(expanding rods)

时间:2014-08-05 10:52:29      阅读:405      评论:0      收藏:0      [点我收藏+]

标签:blog   http   os   io   数据   2014   代码   div   

【题意描述】

本题就是给定一个圆棒的热膨胀系数以及膨胀的温度,求最后变弯后中心点与原来中心点的距离。

【思路分析】

几何+二分:

bubuko.com,布布扣

bubuko.com,布布扣

根据公式我们就可以利用二分进行查找了,当然二分是有技巧的,我们由于是double型数据,我们需要在设置循环条件时不能用high-low>0(会陷入系循环)而是需要设置精度esp(1e-5)写成high-low>esp就可以了。

【AC代码】

#include<iostream>
#include<math.h>
#include<iomanip>
using namespace std;
#define esp  1e-7
int main()
{
 double l,d,c;
 while(cin>>l>>d>>c)
 {
     if(l<0&&d<0&&c<0)
        break;
     if(l==0||c==0||d==0)
        cout<<"0.000"<<endl;
     else 
     {
        double high=l*0.5;
        double low=0.0;
        double s=(1+d*c)*l;
        double mid;
        while(high-low>esp)
        {
             mid=(high+low)/2;
            double  r=(4*mid*mid+l*l)/(8*mid);
            double  s1=2*r*asin(l/(2*r));
            if(s1<s) low=mid;
            else high=mid;
        }
        double h=mid;
        cout<<fixed<<setprecision(3)<<h<<endl; 
     }
 }
 return 0;
}

 

POJ 1905(expanding rods),布布扣,bubuko.com

POJ 1905(expanding rods)

标签:blog   http   os   io   数据   2014   代码   div   

原文地址:http://www.cnblogs.com/khbcsu/p/3891600.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!