c311. PC:分組之塔
題目 Problem
題目連結:https://zerojudge.tw/ShowProblem?problemid=c311
敘述 Description
進到了這個房間,小風終於遇到第一個塔主,這個塔主精神有點疾病,他有超級多的部下,而他想要將這些人以91個人為單位分為一組,而多出來的人就要把他殺掉。
然而他實在是太懶惰了,不想要自己算要殺掉多少人,於是他命令小風幫他算出人數,否則第一個先死的就是小風了。
無奈小風的除法沒有學好,所以他算不出來。於是小風再次需要各位的幫忙,請算出塔主需要殺掉的人數。
輸入 Input
輸入有多筆測資,並以EOF作為結尾。
每一筆測資包含一個正整數n,代表塔主的部下人數。
10%的測資滿足n<=10^9
40%的測資滿足n<=10^18
100%的測資滿足n<=10^100000
輸出 Output
對於每一筆輸入 請輸出塔主需要殺掉的人數
範例輸入 Sample Input
1 |
|
範例輸出 Sample Output
1 |
|
提示 Hint
題解 Solution
如何判斷數字是不是$7$的倍數跟$13$的倍數
當然是打開 Google 查啊(X)
7的倍數:由個位數起每三位數字一節,各奇數節的和與偶數節的和相減,其差是7的倍數。
13的倍數:由個位數起每三位數字一節,各奇數節的和與偶數節的和相減,其差是13的倍數。
(文字來源:https://leestar2018.blogspot.com/2016/09/113.html)
把數字長度補到$3$的倍數就可以算了
反正數字都一樣,就直接 $mod\ 91$
(繳交後3秒,回傳結果:WA)
後來想想,我忘了重要關鍵點,因為只是判斷7的倍數或13的倍數,可以不用管正負
但!如果是 $mod$ 就要區分正負關係了
正數正常 $mod\ 91$ 就好
負數要先 $mod\ 91$ 再加 $91$ 再 $mod\ 91$
不知道為什麼的人請去 Google 負數取模
程式碼 Accepted Code
1 |
|
後記 Afterword
異想不到的事,這題我是第一個 $0ms$ 完成
畢竟 ZeroJudge 有改版過
效能應該有提升
但,套用憲哥說的一句話
不過我倒是好奇,畢竟這題曾經是比賽題
如果是在比賽期間,你要怎麼讓這題拿到AC呢?