1246:膨脹的木棍
【題目描述】【分析】當長度為l的一根細木棍的溫度公升高n度,它會膨脹到新的長度l』
=(1+n*c)*
l,其中c是熱膨脹係數。
當一根細木棍被嵌在兩堵牆之間被加熱,它將膨脹形成弓形的弧,而這個弓形的弦恰好是未加熱前木棍的原始位置。
你的任務是計算木棍中心的偏移距離。
【輸入】
三個非負實數:木棍初始長度(單位:公釐),溫度變化(單位:度),以及材料的熱膨脹係數。
保證木棍不會膨脹到超過原始長度的1.5倍。
【輸出】
木棍中心的偏移距離(單位:公釐),保留到小數點後第三位。
【輸入樣例】
1000 100 0.0001
【輸出樣例】
61.329
這題初看就一簡單的三函式題:己知弧長、弦長,求扇形半徑與弦心距的差,怎麼還需要程式設計呢?不信,我解給你看,來吧,幹就完了。
解:設弧長為l,弦長為d,半徑為r,扇形中心角為a,中心偏移距離為x。由題目可知:d,n,c為已知量。
l=d*(1+n*c) (可算值) l=r*a (1) r*sina=d/2 (2)
(1)(2) 兩式相乘可消元r得一關於a的方程:l*sina=a*d/2(我的神啊,這方程能解嗎?你們誰有公式可算記得告訴我。)
這個方程就是傳說中的超越方程,目前應該沒有公式(怒我孤陋寡聞的小本科生不會解)。
繼續讀題,尋找線索:「保證木棍不會膨脹到超過原始長度的1.5倍」,這是要給我範圍?有範圍就可以縮小範圍啊,這縮小範圍二分法最拿手,
哦,這是要我們用二分法求解中心角吧,求出中心角其他的就好說了。這個中心角初始範圍定在(0,pi)(pi代表圓周率)
對哦,這個圓周率好像c++沒現成的哦。那用個數學公式換下吧:pi=acos(-1)。那餘下的就簡單了:x=r-r*cos(a/2)。
【見證奇蹟】
//1246**1246:膨脹的木棍
#include#include
#include
using
namespace
std;
intmain()
alf=m;
r=l/alf/2
; x=r-r*cos(alf);
cout
<
<3)<
return0;
}
第七章 分治演算法1246 膨脹的木棍
1246 膨脹的木棍 時間限制 1000 ms 記憶體限制 65536 kb 提交數 2257 通過數 686 題目描述 當長度為l的一根細木棍的溫度公升高n度,它會膨脹到新的長度l 1 n c l,其中c是熱膨脹係數。當一根細木棍被嵌在兩堵牆之間被加熱,它將膨脹形成弓形的弧,而這個弓形的弦恰好是未...
openjudge 膨脹的木棍
總時間限制 1000ms 記憶體限制 65536kb 描述 當長度為l的一根細木棍的溫度公升高n度,它會膨脹到新的長度l 1 n c l,其中c是熱膨脹係數。當一根細木棍被嵌在兩堵牆之間被加熱,它將膨脹形成弓形的弧,而這個弓形的弦恰好是未加熱前木棍的原始位置。你的任務是計算木棍中心的偏移距離。輸入三...
1 11 09 膨脹的木棍
描述 當長度為l的一根細木棍的溫度公升高n度,它會膨脹到新的長度l 1 n c l,其中c是熱膨脹係數。當一根細木棍被嵌在兩堵牆之間被加熱,它將膨脹形成弓形的弧,而這個弓形的弦恰好是未加熱前木棍的原始位置。你的任務是計算木棍中心的偏移距離。輸入三個非負實數 木棍初始長度 單位 公釐 溫度變化 單位 ...