类欧几里得学习笔记

随机刷 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))\) (吧)。

posted @ 2022-03-16 15:12  ZSH_ZSH  阅读(47)  评论(1编辑  收藏  举报