https://atcoder.jp/contests/abc158/tasks/abc158_b
解説
https://atcoder.jp/contests/abc158/submissions/10643830
先頭からN個のボール列は、
AAAABBBBAAAABBBBAAAABBBBと青ボール赤ボールのグループが最初に続く、
そして、AAAで終わるか、AAAABBとAは置ききってBで終わるかという感じになる。
グループはA+B個分になる。len=A+Bとしておく。
すると、グループの個数はN/lenとなる。
このグループの個数×Aがグループで存在するボールの個数である。
残りはN%len個となるが、青いボールはそのうち先頭のA個であるため、min(N % len, A)が残りでの青ボールの個数。
これの和が答え。
ll N, A, B; //--------------------------------------------------------------------------------------------------- void _main() { cin >> N >> A >> B; ll len = A + B; ll ans = (N / len) * A + min(A, N % len); cout << ans << endl; }