二分 G 受热膨胀

1、简单描述

一个长为l的铁条,固定两端加热,温度和膨胀系数已知,求铁条膨胀后高度。

2、思路

#include <iostream>
#include <cstdio>
#include <cmath>
#include<iomanip>
using namespace std;
int main()
{
    double l,c,n,ll,t,lef,rig,mid,y,r,h;
    while(cin >> l >> n >> c)
    {
            if(l<0&&n<0&&c<0)
                break;

            ll=(1+c*n)*l;
            lef=0.0;
            rig=l*0.5;
            while(rig-lef > 1e-5)
            {
                mid=(lef+rig)/2;
                double R = (4*mid*mid + l*l) / (8 * mid);
                if(2*R*asin(l/(2*R)) < ll)
                    lef=mid;
                else
                    rig=mid;
            }

            cout<<fixed<<setprecision(3)<<mid<<endl;
    }
    return 0;
}

 

二分查找,同样在精度处理上有问题,double型数据不能直接判断相等,二者相减小于一个很小的数。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值