問題概要
問題ページ
-
B - Count Balls
問題ページへ移動する
問題文
高橋君は青と赤の \(2\) 色のボールを持っており、これらを一列に並べようとしています。
初め、列にボールはありません。
根気のある高橋君は、次の操作を \(10^{100}\) 回繰り返します。
- 列の末尾に、\(A\) 個の青いボールを加える。その後、列の末尾に \(B\) 個の赤いボールを加える。
こうしてできる列の先頭から \(N\) 個のボールのうち、青いボールの個数はいくつでしょうか。
制約
- \(1 \leq N \leq 10^{18}\)
- \(A, B \geq 0\)
- \(0 < A + B \leq 10^{18}\)
- 入力は全て整数である
問題の考察
ACコード
import sys
def solve():
input = sys.stdin.readline
mod = 10 ** 9 + 7
n , a, b = list(map(int, input().rstrip('\n').split()))
d, m = divmod(n, (a + b))
print(d * a + min(m, a))
if __name__ == '__main__':
solve()