ABC165 D Python で解く

ABC165 D

D - Floor Function

  • これは数学ですかね。Nが大きいので当然全探索は間に合いません。
  • 手を動かして実験すると良いと思います。入力例1 で n を大きくしてみると考えやすいかもしれません。

x を 1 ずつ大きくしていくと、x が B の倍数のときはそれぞれの分数がともに整数になり、全体は0になるのがわかります。また、x = B + 1
のときは

floor(Ax/B) = A + floor(A/B)

A × floor(x/B) =A + A × floor(1/B)

となり、全体は x = B のときの値と等しくなります。 これでB周期で繰り返すことに気付けるのではないでしょうか。

実装はすることがありません。

a, b, n = map(int, input().split())
x = min(b-1, n)
ans = (a*x)//b - a*(x//b)
print(ans)