題解|ZeroJudge c004. 10812 - Beat the Spread!
【題目】c004. 10812 - Beat the Spread!
題解
1 | n=int(input()) |
解說
程式第3行的
3 | a,b=map(int,input().split()) |
這段的意義在於把輸入的測資(例如【範例輸入#1】中的40 20
)先用split()
分開,再分別轉換成int
型態,然後分別指派給a跟b。
之後,可以注意到,第4行的程式
4 | if a<b or ((a+b)%2!=0 or (a-b)%2!=0) |
是用來判斷
- a跟b的大小關係,因為輸入說明有提到輸入的數字s及d分別是分數的總和及差的絕對值,因此當
a<b
就是不可能發生的case。 - a+b跟a-b是否可以被2整除,因為稍後我們會用到聯立方程式,倘若不能被2整除,代表分數是非整數,是不合法的case。
接著,在else的部分可以看到
7 | y=(a-b)//2 |
這就是在執行聯立方程式,因為
1 | 令兩隊分數分別為x及y |
只不過,我的程式裡令s、d為a跟b。
之後,再依照題目要求輸出2隊分數即可(注意分數較高者在前)
結語
以上就是本題題解,倘若有誤或是對於解題仍有疑問,歡迎於底下留言區留言。