【ABC158 B】「Count Balls」を解く【Python3】

abc158b

「AtCoder」解説一覧へ

青と赤の2色のボールを決められた順番に並べ、N個のボールのうち、青いボールがいくつあるかを答える問題です。

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

ans = n // (a + b)
ans *= a

if n % (a + b) != 0:
    ans += min(a, n % (a + b))

print(ans)

まず、ボールの個数N を青と赤のボールを条件の通りに1回並べた数で割ります。

//は切り捨て除算です。

こうすることで、完全な操作を何回したかどうかがわかるので、「完全な操作の回数×a」で、回数分の青いボールの個数を出します。

余りがなければ、これが答えになります。

余りがある場合、「a(1回の操作での青いボールの個数)」と「余り」を比較して、より小さい方を答えに足します。

split()メソッド

split()メソッドは、区切り文字を指定して、文字列を分割します。

区切り文字を指定しない場合、空白、タブ、改行で分割されます。

str.split("区切り文字")

map()関数

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

map(関数、イテラブル)

【ABC158】解説記事リスト

「AtCoder」解説一覧に戻る

コメントを残す

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