AtCoder Beginners Selection ABC087B – Coinsをpythonで解いてみた

本サイトABC087B – Coinsへは以下から

問題:Coins

 

あなたは、500円玉を A 枚、100 円玉を B 枚、50 円玉を C 枚持っています。 これらの硬貨の中から何枚かを選び、合計金額をちょうど X 円にする方法は何通りありますか。

同じ種類の硬貨どうしは区別できません。2 通りの硬貨の選び方は、ある種類の硬貨についてその硬貨を選ぶ枚数が異なるとき区別されます。

制約

  • 0≤A,B,C≤50
  • A+B+C≥1
  • 50≤X≤20000
  • A,B,C は整数である
  • X は 50 の倍数である

入力

A
B
C
X

出力

硬貨を選ぶ方法の個数を出力せよ。

入力例 1

2
2
2
100

出力例 1

2

条件を満たす選び方は以下の 2 通りです。

  • 500 円玉を 0 枚、100 円玉を 1 枚、50 円玉を 0 枚選ぶ。
  • 500 円玉を 0 枚、100 円玉を 0 枚、50 円玉を 2 枚選ぶ。

入力例 2

5
1
0
150

出力例 2

0

合計金額をちょうど X 円にする必要があることに注意してください。

入力例 3

30
40
50
6000

出力例 3

213

解答例

A = int(input())
B = int(input())
C = int(input())
X = int(input())

count = 0

for a in range(A+1):
    for b in range(B+1):
        for c in range(C+1):
            if 500*a + 100*b + 50*c == X:
                count += 1

print(count)

解説

この問題は、与えられた硬貨の組み合わせで目的の合計金額Xを作成する方法の数を求めるものです。具体的には、500円玉、100円玉、50円玉の組み合わせでX円を作る方法が何通りあるかを計算します。

以下は、この問題を解くためのPythonのプログラムの手順です。

  • 入力の受け取り:
    • int(input())を使用して、500円玉の数A、100円玉の数B、50円玉の数C、目的の合計金額Xを受け取ります。
  • 初期化:
    • countを0に初期化します。これは、目的の合計金額Xを作成する方法の数をカウントするための変数です。
  • 組み合わせの計算:
    • 3つのforループをネストして、500円玉、100円玉、50円玉のすべての可能な組み合わせを試します。
    • 各組み合わせについて、合計金額がXと一致するかどうかを確認します。一致する場合、countを1増やします。
  • 結果の出力:
    • print(count)を使用して、目的の合計金額Xを作成する方法の数を出力します。

以下は、この問題を解くためのPython3のプログラムです。

# 入力の受け取り
A = int(input())
B = int(input())
C = int(input())
X = int(input())

# 初期化
count = 0

# 組み合わせの計算
for a in range(A+1):
    for b in range(B+1):
        for c in range(C+1):
            if 500*a + 100*b + 50*c == X:
                count += 1

# 結果の出力
print(count)

次の問題へ

前の問題へ

一覧へ

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

雇われのシステムエンジニアです。
普段は車載ECUのセキュリティー分野に従事しております。

■保有資格
Salesforce 認定 アドミニストレーター
Salesforce 認定 Platform アプリケーションビルダー
Salesforce 認定 Platform デベロッパー

コメント

コメントする

目次