国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

POJ 1905-Expanding Rods(二分法-中心移動(dòng)距離)

2019-11-09 19:22:56
字體:
供稿:網(wǎng)友
Expanding Rods
Time Limit: 1000MS Memory Limit: 30000K
Total Submissions: 15779 Accepted: 4196

Description

When a thin rod of length L is heated n degrees, it expands to a new length L'=(1+n*C)*L, where C is the coefficient of heat expansion. When a thin rod is mounted on two solid walls and then heated, it expands and takes the shape of a circular segment, the original rod being the chord of the segment. Your task is to compute the distance by which the center of the rod is displaced. 

Input

The input contains multiple lines. Each line of input contains three non-negative numbers: the initial lenth of the rod in millimeters, the temperature change in degrees and the coefficient of heat expansion of the material. Input data guarantee that no rod expands by more than one half of its original length. The last line of input contains three negative numbers and it should not be PRocessed.

Output

For each line of input, output one line with the displacement of the center of the rod in millimeters with 3 digits of precision. 

Sample Input

1000 100 0.000115000 10 0.0000610 0 0.001-1 -1 -1

Sample Output

61.329225.0200.000

Source

Waterloo local 2004.06.12

題目意思:

有一根棍子受熱會(huì)彎曲成一段圓弧,求受熱前后中心的移動(dòng)距離,也就是圖中的ans。

解題思路:

l是原長,ll是受熱彎曲后的長度,補(bǔ)全圓弧所在扇形,半徑為R,根據(jù)幾何數(shù)學(xué)計(jì)算公式推導(dǎo)出圖中最下面兩個(gè)式子。對ans在[0,0.5*l]的范圍內(nèi)二分枚舉計(jì)算出對應(yīng)的R值,代入后計(jì)算出的值與ll比較:如果大于ll,說明ans大了,改變范圍取前二分之一;反正,說明ans取小了,改變范圍取后二分之一。此外,由于全部是double型,所以要注意比較時(shí)的精度。
#include<iostream>#include<cstdio>#include<iomanip>#include<cmath>#include<cstdlib>#include<cstring>#include<map>#include<algorithm>using namespace std;#define INF 0xfffffffconst double eps = 1e-8;#define MAXN 50050const double PI = acos(-1.0);int a[MAXN];double l,ll,n,c,r,high,low,mid;int main(){#ifdef ONLINE_JUDGE#else    freopen("F:/cb/read.txt","r",stdin);    //freopen("F:/cb/out.txt","w",stdout);#endif    ios::sync_with_stdio(false);    cin.tie(0);    while(cin>>l>>n>>c)    {        if(l<0&&n<0&&c<0)break;        high=l/2,low=0;        ll=(1+n*c)*l;        while(high-low>eps)        {            mid=(low+high)/2;            r=(4*mid*mid+l*l)/(8*mid);            if(2*r*asin(l/(2*r))<ll)                low=mid;            else                high=mid;        }        cout<<fixed<<setprecision(3)<<mid<<endl;    }    return 0;}/*1000 100 0.000115000 10 0.0000610 0 0.001-1 -1 -1*/
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 新巴尔虎左旗| 乌拉特前旗| 新野县| 祁东县| 嵊泗县| 信丰县| 郯城县| 德惠市| 纳雍县| 北辰区| 绥化市| 洪江市| 吉林省| 依安县| 绍兴县| 通州市| 巴里| 东乌珠穆沁旗| 临沧市| 连山| 田林县| 青州市| 漾濞| 定南县| 开远市| 砚山县| 万山特区| 遂川县| 当阳市| 岳阳县| 潜江市| 府谷县| 吴忠市| 武定县| 聂拉木县| 平顶山市| 多伦县| 渑池县| 富民县| 岑巩县| 称多县|