切換
舊版
前往
大廳
主題

ZeroJudge - e577: 10042 - Smith Numbers 解題心得

Not In My Back Yard | 2019-12-25 18:18:05 | 巴幣 0 | 人氣 259

題目連結:


題目大意:
給定一正整數 T ,代表有 T 筆測試資料,每筆佔一列。每列給定一正整數  N (0 < N < 10 ^ 9),代表要求大於 N 的最小史密斯數(Smith Numbers)。

而史密斯數定義為:
一數的質因數分解(如 4937775 = 3 × 5 × 5 × 65837),其質因數分解各項的各個位數之總和(3 + 5 + 5 + 6 +5 + 8 + 3 + 7 = 42)等於該數字自身各個位數之和(4 + 9 + 3 + 7 + 7 + 7 + 5 = 42)的話,則該數為一史密斯數。但是如果該數本身是質數,則不算作在內。



範例輸入:
1
4937774


範例輸出:
4937775


解題思維:
單純地窮舉 N + 1 、 N + 2 等等,看哪個數字先符合史密斯數的定義即可。

可以先建一質數表,可以更快速地先判斷一數是不是質數。是質數就直接跳過這個數字,因為不符合史密斯數的定義;接著,用質數表將該數分解,每找到一個質因數就加上該質因數的各個位數和。然後去跟原本數字的位數和比較。一樣的話,即是史密斯數。

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

創作回應

更多創作