project euler problem 30
問題どおりだと以下のとおり
Prelude Data.List> let f x= g $ show x ; g []=0;g (x:xs)=((read [x])::Int)^4+ g xs in [x|x<-[2..9999],f x==x] [1634,8208,9474] (0.30 secs, 132602804 bytes)
どうも色々実験すると6桁以内なので
main=print $ sum $ filter (\x->f x==x) [2..999999] f x= g $ show x g []=0 g (x:xs)=((read [x]):: Integer )^5+ g xs
実験内容
Prelude> 9^5*6 354294 Prelude> 9^5*7 413343 Prelude> map (length.show) $ map (\x->9^5*x) [1..10] [5,6,6,6,6,6,6,6,6,6]
ということで 各桁を五乗したものを足しても6桁以上にならない。