ETH官方钱包

切換
舊版
前往
大廳
主題

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

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

題目連結(jié):


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

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



範(fàn)例輸入:
1
4937774


範(fàn)例輸出:
4937775


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

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

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

創(chuàng)作回應(yīng)

相關(guān)創(chuàng)作

更多創(chuàng)作