close

題目概要:

求出x使得體積可以最大、最小。

boxbxo.JPG

 

解題方向:

每組測資皆有2個Input,L、W。

由上圖我們可以推導盒子體積(V)=(L-2*x) * (W-2*x) * x

 

1.盒子體積最大

使用微分的方式去求出極大/極小值。把體積式子微分,微分後為開口向上的二次函數,令微分後的結果等於0,則求出來為極小值,所以帶回原體積式子所得到的體積會是最大。

 V'=L*W - 4*(L+W)*x + 12*x^2

L*W - 4*(L+W)*x + 12*x^2=0

將L、W帶入。再用-b+sqrt(b*b-4*a*c)/2*a或-b-sqrt(b*b-4*a*c)/2*a求出x即可。

Ps.使用-b-sqrt(b*b-4*a*c)/2*a即可,因為-b-sqrt(b*b-4*a*c)/2*a所求得體積會比-b+sqrt(b*b-4*a*c)/2*a還要小。

 

2.盒子體積會小

當x為0時體積會最小。當x=L/2或x=W/2時體積也會是最小。

 

注意事項:

1.瘋狂程設練習題中Input沒有包含float的測資(但是題目是有要求的),所以在瘋狂程設練習題中使用int是會過的,不過還是要使用float的輸入,否則在Uva或者其他平台可能會無法通過測資。
2.網路上有些資料會看到要加1e-9以湊足被省去的小數點(C語言),我只有打java的版本,發現是可以不用加上1e-9的,但C語言我沒有特別去試,所以我也不確定是否要加1e-9 Uva才會過。
3.java使用System.out.printf輸出時換行在Uva只需要\n即可,而在瘋狂程設需要\r\n。

 

程式碼:

arrow
arrow
    文章標籤
    Java
    全站熱搜
    創作者介紹
    創作者 a7069810 的頭像
    a7069810

    紀錄自己的程式人生

    a7069810 發表在 痞客邦 留言(0) 人氣()