2013年7月11日 星期四

[UVA]The Hotel with Infinite Rooms

CPE 10407、UVA 10170程式解題。

*在這裡所貼的程式碼僅是提供解決方法,有可能不是正確答案。
  因為有些題目的測資小K可能沒去考慮到,但至少可以保證最正常的測資跑起來是正確的!
































解題觀念:



該團人數等於該團住宿天數。且下一個旅行團的人數會是上一團人數再多一人。

因此人數累積=天數累積,因此用for迴圈累積天數,就可以知道第D天的人數狀況。

如果用圖形表示會發現,形狀類似梯形,因此計算天數可以帶梯形面積公式
人數=面積=(1+5)*4/2=10
人數=面積=(1+5)*4/2=10
第10天時,居住人數為5人。











解題過程:

(*題目有限定測資10^15>32位元,因此宣告資料形態要用long。)

要宣告人數和天數的變數就不用再多說。

我上面雖然設定sum初始值為0,但那是當時在用另一種解法時設定(也就是小K忘記修改..),基本上不用設定初始值,宣告sum是為了要存放等等要計算的梯形面積

for迴圈累積天數,我沒有設定終止條件,因為我在裡面用if條件式判斷,當人數累積大於等於天數時,印出當時居住人數並跳出迴圈。

EX:
         輸入 3 10,進入sum計算(3+(3+1))*(1+1)/2=7,進入if判斷式=>7>=10(不成立),

         在RUN一次for迴圈,進入sum計算(3+(3+2))*(2+1)/2=12,進入判斷式=>12>=10(成立)。

         印出當時居住人數,break。

(如果有不正常測資部分小K會再跟學長們討論,有結果會再上傳修正版。)

BY 小K

沒有留言:

張貼留言