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(関数、イテラブル)