前往
大廳
主題

ZeroJudge - a040: 阿姆斯壯數 解題心得

Not In My Back Yard | 2021-04-18 00:00:03 | 巴幣 0 | 人氣 230

題目連結:


題目大意:
阿姆斯壯數(Armstrong Numbers)定義為一個 n 位數的正整數,其每個位數各自的 n 次方之和恰好等於自身。

例如 1634 = 1 ^ 4 + 6 ^ 4 + 3 ^ 4 + 4 ^ 4

現在給定兩正整數 n 、 m (0 < n < m ≦ 1000000),試問範圍 n(含)~ m(含)之間有哪些阿姆斯壯數?如果沒有任何阿姆斯壯數,則輸出「none」。



範例輸入:
範例輸入 #1
100 999

範例輸入 #2
10 99


範例輸出:
範例輸出 #1
153 370 371 407

範例輸出 #2
none


解題思維:
就是單純地窮舉 n ~ m 之間所有的數字,然後判斷它們是不是阿姆斯壯數:將每個數字拆成多個位數並統計其位數長 d ,最後將每個位數取 d 次方全部相加再判斷是否與原數相同。

不過因為我們會頻繁地使用 0 ~ 9 的各個可能的次方,例如 2 ^ 3 、 2 ^ 4 、 3 ^ 5 、 3 ^ 6 等等。我們可以將這些數字之次方預先計算出來存在一陣列裡。這樣窮舉時,不用額外再次計算每個位數的某某次方。




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

創作回應

更多創作