問題概要
庭に鶴と亀が何匹かずついる.鶴は $2$ 本の足をもち,亀は $4$ 本の足をもつ.
動物の総数が $X$ 匹であって足の総数は $Y$ であることがあり得るかどうか判定せよ.
制約
- $1 \leq X, Y \leq 100$
解法
鶴の羽数を固定したとします.鶴が $a$ 羽いるとき,亀は $X - a$ 匹いることになります.$b = X - a$ とします.このとき,足の総数は $2a + 4b$ と計算できます.鶴の羽数をありえる範囲($0$ 以上 $X$ 以下)で全部試して,それぞれについて足の総数を求めて $Y$ と比較し一致するものがあるかどうかを調べることで,問題を解くことができます.
コード (Haskell)
readInts = map ( fst . fromJust . B.readInt ) . B.words <$> B.getLine main = do [ x, y ] <- readInts putStrLn $ which "No" "Yes" $ null $ do i <- [ 0 .. x ] let j = x - i guard $ i * 2 + j * 4 == y return ()