类欧几里得学习笔记
随机刷 ARC 的时候遇到了 23333。
考虑求出这样一个式子(注意下标)。
\[f(a,b,c,n) = \sum_{i=0}^n [{ai+b \over c}] \]在 $a \geq c $ 或者 \(b \geq c\) 的时候
\[\begin{align} &\ \ \ \ \ \sum_{i=0}^n [{ai+b \over c}]\\& = \sum_{i=0}^n {[{a\over c}]i+[{b \over c}]} + [{(a\%c)i+(b\%c) \over c }]\\& = {n(n+1)\over 2}[{a \over c}]+(n+1)[{b \over c}] + f(a\%c,b\%c,c,n)\end{align} \]在 $a < c $ 且 \(b < c\) 的时候,令 \(m = [{an+b \over c}]\)
\[\begin{align} &\ \ \ \ \ \sum_{i=0}^n [{ai+b \over c}]\\& = \sum_{i=0}^n \sum_{j=0}^{[{ai+b \over c}]-1} 1 \\& = \sum_{j=0}^{m-1} (n-[{jc+c-b-1 \over a}])\\& = nm-f(c,c-b-a,a,m-1)\end{align} \]然后一些奇奇怪怪的边界随便判一下就行了。
复杂度是 \(O(\log (a+c))\) (吧)。