aacord’s memo

abcを中心にpythonで解いた問題のメモ、整理をしています。緑になった。

abc 165 d-Floor Function (python)

a,b,d,e の4完。cは 19C10 の全探索が間に合うとは思えず敗戦。
その代わり青diff の数列の問題をかじっていたおかげで e を解くことができた。考え方自体にはあんまりないけど、この前解いた abc 094 d-Worst Case に印象は似ていた。
d は、x//b が一定の間は、(a*x)//b -a*(x//b) は x について単調増加すること、
x % b == p となる x についても、(a*x)//b -a*(x//b) は x について単調増加することがわかれば、
最大値の候補は N か ( x % b == N-1 and x <= N ) を満たすものの中で最大の x の二つしかない。
グラフ書いたら多分わかる。(書いてないけど)
b の範囲がデカすぎるので候補を2つまで絞り込まず x から N まで探索させたら TLE した。

a,b,n = map(int,input().split())
p = (n+1)//b
c = p*b-1
if c < 0:
  print(a*n//b-a*(n//b))
  exit()
ans = max(a*n//b-a*(n//b),a*c//b-a*(c//b))
print(ans)