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