FZU 1076 穿越沙漠(水 )

2021-07-09 05:01:20 字數 1233 閱讀 4753

description

一輛吉普車來到x公里寬的沙漠邊沿a點,吉普車的耗油量為1公升/公里,**油量為500公升。通常,吉普車必須用自身油箱中的油在沙漠中設定若干個臨時儲油點,才能穿越沙漠的。假設在沙漠邊沿a點有充足的汽油可供使用,那麼吉普車從a點穿過這片沙漠到達終點b,至少要耗多少公升油。請編寫乙個程式,計算最少的耗油量(精確到小數點後3位)。

(1)假設吉普車在沙漠中行進時不發生故障;

(2)吉普車在沙漠邊沿a點到終點b的直線距離為x≧500公里(即沙漠寬度);

input

輸入的第一行含乙個正整數k(1<=k<=6),表示測試例的個數。後面緊接著k行,每行對應乙個測試例,包含乙個正整數x,表示從a點到b點的距離(1<=x<=2000)

output

每個測試例對應一行輸出,包含乙個數,表示最少的油耗量

sample input

2 500

1000

sample output

500.000

3836.497

solution

簡單題,逆推即可,n<=500時不用多說,當n>500時,我們反向考慮每次汽車加滿500l汽油可以跑多遠,顯然第一段500l油可以跑完最後500公里,而若想讓汽車在500公里處有500l汽油而路上消耗500l,則第二段路程為500/3公里,若想讓汽車在500+500/3公里處有1000l汽油而路上消耗500l,則第三段路程為500/5公里(汽車每次出發都加滿500l汽油,一共往返兩次,第三次就將所有油用完,所以在路上跑了5次),以此類推,設汽車跑了res段,則耗油500resl,路程為

x=n-(500/1+500/3+…+500/(2*res-1)),而開始的n-x公里汽車為了在n-x公里處存500resl油則需要在這段路上跑2res-1次,耗油為(2res-1)*(n-x),總耗油量就是500res+(2res-1)(n-x)

code

#include

int main()

while(n>0)

ans=500.0

*res+(2

*res-1)*n;

printf("%.3lf\n",ans);

}return

0;}

FOJ 1076 穿越沙漠 解題報告

一輛吉普車來到x公里寬的沙漠邊沿a點,吉普車的耗油量為1公升 公里,油量為500公升。通常,吉普車必須用自身油箱中的油在沙漠中設定若干個臨時儲油點,才能穿越沙漠的。假設在沙漠邊沿a點有充足的汽油可供使用,那麼吉普車從a點穿過這片沙漠到達終點b,至少要耗多少公升油。請編寫乙個程式,計算最少的耗油量 精...

bit 穿越沙漠

參考 無上陽光13的部落格 穿越沙漠 acm.bit.edu.cn 1005 智力題 時間限制 1秒 記憶體限制 64m problem description 一輛吉普車來到 x 公里寬的沙漠邊沿 a 點,吉普車的耗油量為 1 公升 公里,油量為 500 公升。通常,吉普車必須用自身油箱中的油在沙...

遞推法 穿越沙漠問題

吉普車試圖穿越 x km 寬的沙漠,吉普車耗油率1l km,油量 500l,對於 x 500,吉普車需要設定臨時儲油點,以穿越沙漠。現在,我們需要對於輸入的 x 值,計算最少的耗油量。其中,0 x 3000.在思考這道題之前,我們先考慮幾個常識性問題 1 越往沙漠深處的儲油點送油,所消耗的油量更多 ...