【ABC085 C】「Otoshidama」を解く【Python3】

「AtCoder」解説一覧へ

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

青橋くんが祖父から受け取ったというお年玉の状況が、実際にありうるかどうか判定し、ありうる場合にはお年玉袋の中身の候補を一つ出す問題です。

提出
n, y = map(int, input().split())

for i in range(n+1):
    for j in range(n+1-i):
        if 10000*i+5000*j+1000*(n-i-j) == y:
            print(i, j, n-i-j)
            exit(0)

print("-1 -1 -1")

N の制約が「1≤N≤2000」であるため、10000 円札、5000 円札、1000 円札のパターンを調べる全探索では、時間が足りません。

全部で N枚であることは分かっているため、10000 円札、5000 円札の全パターンに対して、残りの枚数を1000 円札だと考えた際に、ありうるかどうかを判定します。

ありうる場合には、その時の枚数をそれぞれ出力してプログラムを終了します。

いくつか候補がある場合にも、どれかを出力すればいいので、出力例と違っていても問題ありません。

ループ処理が途切れず終わった場合、候補がなかったということなので、「-1 -1 -1」を出力します。

【ABC085】解説記事リスト

「AtCoder」解説一覧に戻る

コメントを残す

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