1
0
Fork 0
projecteuler/63.hs

12 lines
322 B
Haskell

digits :: Integer -> Integer
digits n = 1 + (floor . logBase 10 . fromIntegral $ n)
powerDigits :: Integer -> Integer -> Bool
powerDigits n p = digits (n ^ p) == p
powers = takeWhile (powerDigits 9) [1..]
count = sum $ map (\n -> sum $ map (\p -> if powerDigits n p then 1 else 0) powers) [1..9]
main = do print count