Edit

【pythonでABC158を解説】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()

プログラミング

-Edit