地下鉄の求人広告
(追記)
リンク元によると問題読み違えてたみたい。転職に失敗しちゃったな。
*Main> exec 180 == (concatMap show [1..]) !! 180 True *Main> exec 5100000000 '3'
five_one_billion = 5100000000 exec :: Integer -> Char exec idx = let (x, y) = f idx (d, m) = y `divMod` x in show (10 ^ (x - 1) + d) !! fromInteger m f :: Integer -> (Integer, Integer) f idx = recur 1 (idx + 1) where recur n idx = let i = idx - g n in if i <= 0 then (n, idx - 1) else recur (n + 1) i g :: Integer -> Integer g 1 = 9 g n = n * 9 * (10 ^ (n - 1))