のてすきあ − 完全独習非プログラマー −

Haskell で Project Euler を解く素人遊び

Problem 30

1634 = 14 + 64 + 34 + 44 は4乗の和だが、このように各桁の5乗の和が元の数と等しくなる数を全て足すといくつになるか。

設定をコードにするのは比較的簡単である。問題は検索範囲、つまりどこまでの数を調べれば良いかというところだろうか。しかしこれも普通に考えれば6桁より大きな数を考える必要はないことが分かる。なぜならば7桁以上では各桁の5乗をどのように足しても元の数より必ず小さくなるからである。具体的には

10x < (95) x ⇔ x < 6

というわけだ。

すっきり☆