Codeforces 148A - A. Insomnia cure

148A - A. Insomnia cure

calc :: Int -> Int -> Int -> Int -> Int -> Int
calc k l m n d = d - length [i | i <- [1..d],
                             i `mod` k /= 0,
                             i `mod` l /= 0,
                             i `mod` m /= 0,
                             i `mod` n /= 0]

main = do s <- getContents
          let [k, l, m, n, d] = map read $ lines s :: [Int]
          print $ calc k l m n d

英文の読み方

英文が難しいけど、意味が分からないところは読み飛ばして最後まで読んでみる。それからまたはじめに戻って全体を読み返す。それを何度か繰り返すと、なんとなく意味がつかめてくる箇所が出てくる(分からないままのことも多いけど)。それから入力と出力のサンプルも確認する。入出力は問題文の意味を読み解くヒントになることも少なくない。