題解|ZeroJudge d235. 10929 - You can say 11
【題目】d235. 10929 - You can say 11
題解
1 | while True: |
解說
本題要求我們輸出:輸入的資料是否屬於11的倍數。
這裡,我們要來複習一下11的倍數判別法…
如果一個數是11的倍數,他的奇數位數字之和跟偶數位數字之和的差會等於0或是11的倍數,例如
1672 |
其奇數位數字是1跟7、偶數位數字是6跟2
abs((1+7)-(6+2))=0
所以1672是11的倍數,實際驗算發現1672/11=152.0
再舉個例子,像是
125 |
其奇數位數字是1跟5、偶數位數字是2
abs((1+5)-2)=4
4不是11的倍數,所以125不是11的倍數
實際驗算發現125/11=11.36
確實不是11的倍數
那我們就用這個特性來解這題
1 | while True: |
這段的意思是重複執行,直到輸入0
6 | a = list(inp) |
以上斷落的意思是說:我先把數字依數位存進list中,例如1234
在list中會變成[1,2,3,4]
10 | for i in range(0, len(a), 2): |
這裡就是像前面所說的,執行11的倍數判別
14 | if abs((sum1 - sum2)) % 11 == 0: |
最後就是輸出結果!
結語
以上就是本題題解。
倘內容有誤或仍有疑問,歡迎在下方留言區留言!