#問題
驚くべき事に、各桁の4乗を足すと元の数になるのは、以下の3つのみである。(ただし1は除く)
1634 = 1^4 + 6^4 + 3^4 + 4^4
8208 = 8^4 + 2^4 + 0^4 + 8^4
9474 = 9^4 + 4^4 + 7^4 + 4^4
これら3つの数の和は、1634 + 8208 + 9474 = 19316である。
同様に、各桁の5乗を足すと元の数になるものたちの和を求めよ。
#回答
N桁の数の各桁の5乗を足すと、最大でもN*(9^5)までにしかならない。
9^5=59049なので、N<=6という上限が課せられる。
その上、6*(9^5)=354294なので、2〜354294の範囲で探せばよいことになる。
main = do
print $ [x| x<-[2..354294], x==sum (map ((^5).read.(:"")) (show x))]
#感想
プログラム自体は1行で簡単あるが、探す範囲の上限を見いだすのに時間がかかりました。