2013年8月1日 星期四

[UVA]Beat the Spread

CPE 10454、UVA 10812程式解題。










































解題觀念:



這題如果將他當成數學題去計算的話,你會怎麼處理呢??

嘛~我是用簡單的方程式去解題。

再來就是得分較高者要列在前面,而且不可能有負整數出現

所以設兩隊分數為a、b;總和 s = a+b、差距 d = a-b。

做個小整理,a = (s+d)/2b = s-a

由上述可見,a一定為偶數(例外測資等等解釋),所以可以加個判斷式判斷a是否為偶數

例外測資:但會遇到一種情況就是,總和為1,差距為0。==>比數為1:0。

                還有比數為0:0的時候,這兩個情況都要另外判斷。


解題步驟:

(測資個數設定不多說囉)

讓使用者輸入雙方的總和、差距。

設兩組判斷式,判斷是否為心機測資。

如果不是,就將總和的數值和差距的數值相加存放到a,

判斷a是否為偶數,如果不是就印出impossible;如果是偶數就繼續下面的計算。

計算完之後,判斷b是否為負數。(如果是就代表a>s,是不可能的情況)


EX:

1(一組測資)
40 20

前兩個判斷式都不符合,所以繼續下面的計算。

a = 40+20 =60  => 60%2=0,為偶數 => 60/2 = 30 => b = 40-30=10。

b = 10 >0,不為負數,印出a、b。


BY 小K

沒有留言:

張貼留言