AtCoder ABC 095 B – Bitter Alchemy Python解説

スポンサーリンク

Bitter Alchemy

赤木さんはお菓子の素を X グラム持っています。これを使って、今夜のパーティーに向けて可能な限りたくさんのドーナツを作ることにしました。ただし、来客の味の好みは様々なので、次の条件を守ることにしました。

N 種類のドーナツそれぞれを少なくとも 1 個は作る。

このとき、最大で何個のドーナツを作ることができるでしょうか?お菓子の素を使い切る必要はありません。また、この問題の制約のもとでは、条件を守ることは必ず可能です。

AtCoder Beginner Contest 「Bitter Alchemy」

お菓子の素XからN種類のドーナツを1種類ずつ作ります。そして、余ったお菓子の素Xから、N種類の中でもっともお菓子の素の消費が少ないドーナツを作ればよいでしょう。

n, x = map(int, input().split())

a = x

for _ in range(n):
    m = int(input())
    x -= m
    a = min(a, m)
    
ans = n + x // a
print(ans)

変数aにはお菓子の素の消費がもっとも少ないドーナツの種類をいれます。min関数を使うので初期値は条件の中で一番大きいXの値を入れています。

作ったN個のドーナツと、余ったお菓子の素をaで割ったドーナツの個数を足して出力すれば正解に辿り着けます。

AtCoderB問題

Posted by cheese