国内予選問題E
http://icpc.logos.ic.i.u-tokyo.ac.jp/icpc2006/contest/all_ja.html#section_E
遅延評価が有利になる問題の一つの例。
パーザコンビネータとあいまって
非常にHaskell向きの問題となっております。
import Control.Monad import Text.ParserCombinators.Parsec main = do [s,n] <- getLine >>= return . words when (s/="0") $ do case parse gens "" s of Right ss -> putStrLn [(ss ++ repeat '0') !! read n] main gens = many gen >>= return . concat gen = count 1 upper <|> do n <- many1 digit r <- between (char '(') (char ')') gens <|> gen return $ concat $ replicate (read n) r