【ABC087 B】「Coins」を解く【Python3】

「AtCoder」解説一覧へ

AtCoder過去問精選10問まとめへ

500 円玉を A 枚、100 円玉を B 枚、50 円玉を C 枚持っているときに、合計金額をちょうど X 円にする方法は何通りあるのか、という問題です。

提出
a, b, c, x = map(int, [input() for i in range(4)])
ans=0

for i in range(a+1):
    for j in range(b+1):
        for k in range(c+1):
            if i*500+j*100+k*50 == x:
                ans+=1

print(ans)

1行ずつ入力処理を書くのは面倒なので、内包表記を使ってまとめて書いています。上記では、4行分の入力をしています。

全探索で解くことができます。500円玉が A 枚以内、100円玉が B 枚以内、50円玉が C 枚以内であることを考えて、全てのパターンを試し、合計値がXになったときにのみ、ansに1を加えます。

map()関数

map()関数は、イテラブル(リストやタプルなど)の各要素に関数の処理を適用します。

map(関数、イテラブル)

【ABC087】解説記事リスト

「AtCoder」解説一覧に戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です