切換
舊版
前往
大廳
主題

ZeroJudge - e612: 13178 - Is it multiple of 3? 解題心得

Not In My Back Yard | 2020-01-20 00:31:34 | 巴幣 0 | 人氣 263

題目連結:


題目大意:
給定一正整數 T ,代表有 T 筆測試資料,每筆佔一列。每列給定一正整數 n (1 ≦ n ≦ 10 ^ 9),代表會升成一個數字為 1 ~ n 連在一起。例如 n = 2 ,則升成出 12 ;n = 10 ,則會是 12345678910 等等。

試問生成的數字可否被 3 整除?



範例輸入:
3
2
6
130000000


範例輸出:
YES
YES
NO


解題思維:
已知判斷一數是否為 3 的倍數,。若且唯若其位數和(例 1235 的位數和為 1 + 2 + 3 + 5 = 11)為 3 的倍數。要判斷位數和是否可被 3 整除可以再次套用相同的方式。

因此,如果 n 為 3 的倍數則生出來的數必為 3 的倍數。

因為 1 的位數和 + 2 的位數和 + 3 的位數和 + 4 的位數和 + 5 的位數和 + 6 的位數和 + …… + n 的位數和為 3 的倍數,若且唯若 n 不為 3 的某倍數 - 1 (1 與 2 、 4 與 5 、……的位數和會彼此合為 3 的倍數,所以如果級數停在 3 的倍數 - 1 則沒有下一個數字可以與之合為 3 的倍數)。

所以只要判斷 n 取 3 的餘數是否為 1 即可。如果是,則代表生成的數字不會是 3 的倍數;反之,代表生成數為 3 的倍數。

此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

相關創作

更多創作