浅谈类欧几里得算法
Task 1
求
\[\sum_{i
=0}^n \lfloor\frac{ai+b}{c}\rfloor\]
设 \(f(a,b,c,n)=\sum_{i=0}^n \lfloor\frac{ai+b}{c}\rfloor\)。
若 \(a\) 或 \(b\) 大于 \(c\),我们有
\[\begin{aligned}
f(a,b,c,n)&=\sum_{i=0}^n \lfloor\frac{ai+b}{c}\rfloor \\
&=\sum_{i=0}^n \lfloor\frac{(a\bmod c)i+c\lfloor\frac{a}{c}\rfloor i+(b\bmod c)+c\lfloor\frac{b}{c}\rfloor}{c}\rfloor \\
&=\frac{n(n+1)}{2}\lfloor\frac{a}{c}\rfloor+(n+1)\lfloor\frac{b}{c}\rfloor+f(a\bmod c,b\bmod c,c,n)
\end{aligned}
\]
转化为了 \(a,b\lt c\) 的情况。以下讨论这样的情况。
\[\begin{aligned}
f(a,b,c,n)&=\sum_{i=0}^n \lfloor\frac{ai+b}{c}\rfloor \\
&=\sum_{i=0}^n \sum_{j=0}^{\lfloor\frac{ai+b}{c}\rfloor-1} 1 \\
&=\sum_{j=0}^{\lfloor\frac{a\textcolor{red}{n}+b}{c}\rfloor-1}
\sum_{i=0}^{n} \left[j\leq \lfloor\frac{ai+b}{c}\rfloor-1\right] \\
&=\sum_{j=0}^{\lfloor\frac{a\textcolor{red}{n}+b}{c}\rfloor-1}
\sum_{i=0}^{n} \left[j+1\leq \lfloor\frac{ai+b}{c}\rfloor\right]
\end{aligned}
\]
\[\begin{aligned}
j+1&\leq \lfloor\frac{ai+b}{c}\rfloor \iff \\
j+1&\leq\frac{ai+b}{c} \iff \\
jc+c-b &\leq ai \iff \\
jc+c-b-1 &\lt ai \iff \\
\lfloor\frac{jc+c-b-1}{a}\rfloor&\lt i
\end{aligned}
\]
代回则得到
\[\begin{aligned}
f(a,b,c,n)&=\sum_{i=0}^n \lfloor\frac{ai+b}{c}\rfloor \\
&=\sum_{j=0}^{\lfloor\frac{a\textcolor{red}{n}+b}{c}\rfloor-1}
\sum_{i=0}^{n} \left[\lfloor\frac{jc+c-b-1}{a}\rfloor\lt i\right] \\
&=\sum_{j=0}^{\lfloor\frac{a\textcolor{red}{n}+b}{c}\rfloor-1} \left\{n-\lfloor\frac{jc+c-b-1}{a}\rfloor\right\} \\
\end{aligned}
\]
\(m:= \lfloor\frac{an+b}{c}\rfloor\),则
\[\boxed{f(a,b,c,n)=nm-f(c,c-b-1,a,m-1)}
\]
\(a,c\) 互换位置,可以证明时间复杂度是 \(\log\) 级的。
Task 2:\(\sum_{i=0}^n i\lfloor \frac{ai+b}{c}\rfloor\)
设 \(g(a,b,c,n)=\sum_{i=0}^n i\lfloor\frac{ai+b}{c}\rfloor\),则不难得到
\[g(a,b,c,n)=\frac{n(n+1)(2n+1)}{6}\lfloor\frac{a}{c}\rfloor+\frac{n(n+1)}{2}\lfloor\frac{b}{c}\rfloor + \\
g(a\bmod c, b\bmod c,c,n)
\]
推式子。
\[\begin{aligned}
g(a,b,c,n)&=\sum_{i=0}^n i\lfloor\frac{ai+b}{c}\rfloor\\
&=\sum_{i=0}^n i\sum_{j=0}^{\lfloor\frac{ai+b}{c}\rfloor-1} 1\\
&=\sum_{j=0}^{\lfloor\frac{an+b}{c}\rfloor-1}
\sum_{i=0}^{n} i\left[
j+1\leq\lfloor\frac{ai+b}{c}\rfloor
\right] \\
&=\sum_{j=0}^{\lfloor\frac{an+b}{c}\rfloor-1}
\sum_{i=0}^{n} i\left[
j+1\leq\lfloor\frac{ai+b}{c}\rfloor
\right] \\
&=\sum_{j=0}^{\lfloor\frac{an+b}{c}\rfloor-1}\sum_{i=\lfloor\frac{jc+c-b-1}{a}\rfloor+1}^{n}i
\end{aligned}
\]
令 \(m=\lfloor\frac{an+b}{c}\rfloor\),\(t=\lfloor\frac{jc+c-b-1}{a}\rfloor\),得到
\[\begin{aligned}
g(a,b,c,n)&=\sum_{j=0}^{m-1} \frac{(n+t+1)(n-t)}{2} \\
&=\frac{1}{2}\left\{\sum_{j=0}^{m-1} (n^2-t^2+n-t)\right\} \\
&\boxed{=\frac{1}{2}\left\{m(n^2+n)-
h(c,c-b-1,a,m-1)-
f(c,c-b-1,a,m-1)
\right\}} \\
\end{aligned}
\]
Task 3:\(\sum_{i=0}^n \lfloor \frac{ai+b}{c}\rfloor^2\)
令 \(h(a,b,c,n)=\sum_{i=0}^n \lfloor \frac{ai+b}{c}\rfloor^2\)
则
\[\begin{aligned}
h(a,b,c,n)&=\sum_{i=0}^{n}\left\{\lfloor\frac{(a\bmod c)i+b\bmod c}{c}\rfloor
+i\lfloor\frac{a}{c}\rfloor+\lfloor\frac{b}{c}\rfloor
\right\}^2\\
&=h(a\bmod c,b\bmod c,c,n)+\\
&\frac{n(n+1)(2n+1)}{6}\lfloor\frac{a}{c}\rfloor^2 +(n+1)\lfloor\frac{b}{c}\rfloor^2+\\
&2\lfloor\frac{a}{c}\rfloor\cdot g(a\bmod c,b\bmod c,c,n) + \\
&2\lfloor\frac{b}{c}\rfloor\cdot f(a\bmod c,b\bmod c,c,n) + \\
& n(n+1)\lfloor\frac{a}{c}\rfloor\lfloor\frac{b}{c}\rfloor
\end{aligned}
\]
考虑当 \(a,b\lt c\) 时的情况,注意到平方不好处理,于是我们有 \(n^2=2\frac{n(n+1)}{2}-n\)。
\[\begin{aligned}
h(a,b,c,n)&=\sum_{i=0}^n \lfloor \frac{ai+b}{c}\rfloor^2 \\
&=\sum_{i=0}^{n} \left\{2\sum_{j=1}^{\lfloor\frac{ai+b}{c}\rfloor} j-\lfloor\frac{ai+b}{c}\rfloor\right\}\\
&=2\sum_{i=0}^{n}\sum_{j=1}^{\lfloor\frac{ai+b}{c}\rfloor}j-f(a,b,c,n)
\end{aligned}
\]
考虑化简前一部分。
\[\begin{aligned}
\sum_{i=0}^{n}\sum_{j=1}^{\lfloor\frac{ai+b}{c}\rfloor}j&= \sum_{i=0}^{n}\sum_{j=0}^{\lfloor\frac{ai+b}{c}\rfloor-1}(j+1)\\
&=\sum_{j=0}^{m-1}(j+1)\sum_{i=0}^{n}\left[j+1\leq \lfloor\frac{ai+b}{c}\rfloor\right] \\
&=\sum_{j=0}^{m-1} (j+1)(n-t) \\
&=\sum_{j=0}^{m-1}(j+1)\cdot n-\sum_{j=0}^{m-1}(j+1)\lfloor\frac{jc+c-b-1}{a}\rfloor \\
&=n\frac{m(m+1)}{2}-f(c,c-b-1,a,m-1)-g(c,c-b-1,a,m-1)
\end{aligned}
\]
别忘了代回去。
不难得到
\[\boxed{h(a,b,c,n)=nm(m+1)-2f(c,c-b-1,a,m-1)-2g(c,c-b-1,a,m-1)-f(a,b,c,n)}
\]