类欧几里得

何为类欧几里得

实际上只是因为它的时间复杂度与欧几里得算法相似而已

推导

给出 \(a,b,c,n\) 需要分别求出以下三个函数的值:

  • \(f(a,b,c,n)=\sum\limits_{i=0}^{n}\lfloor\frac{ai+b}{c}\rfloor\)
  • \(g(a,b,c,n)=\sum\limits_{i=0}^{n}i\lfloor\frac{ai+b}{c}\rfloor\)
  • \(h(a,b,c,n)=\sum\limits_{i=0}^{n}\lfloor\frac{ai+b}{c}\rfloor^2\)

推导前的预设函数

  • \(s0(n)=\sum\limits_{i=0}^{n}1=n+1\)
  • \(s1(n)=\sum\limits_{i=0}^{n}i=\frac{n(n+1)}{2}\)
  • \(s2(n)=\sum\limits_{i=0}^{n}i^2=\frac{n(n+1)(2n+1)}{6}\)

\(f\) 的推导

Case 1:当 a==0

\[\begin{alignat*}{10000} f(a,b,c,n)&=\sum\limits_{i=0}^{n}\lfloor\frac{ai+b}{c}\rfloor\\ &=\sum\limits_{i=0}^{n}\lfloor\frac{b}{c}\rfloor\\ &=s0(n)\lfloor\frac{b}{c}\rfloor \end{alignat*} \]

Case 2:当 a>c||b>c

\[\begin{alignat*}{10000} f(a,b,c,n)&=\sum\limits_{i=0}^{n}\lfloor\frac{ai+b}{c}\rfloor\\ &=\sum\limits_{i=0}^{n}(\lfloor\frac{(a\bmod c)i+b\bmod c}{c}\rfloor+i\lfloor\frac{a}{c}\rfloor+\lfloor\frac{b}{c}\rfloor)\\ &=f(a\bmod c,b\bmod c,c,n)+s1(n)\lfloor\frac{a}{c}\rfloor+s0(n)\lfloor\frac{b}{c}\rfloor \end{alignat*} \]

Case 3:当 a<=c&&b<=c

\[\begin{alignat*}{10000} f(a,b,c,n)&=\sum\limits_{i=0}^{n}\lfloor\frac{ai+b}{c}\rfloor\\ &=\sum\limits_{i=0}^{n}\sum\limits_{j=0}^{\lfloor\frac{ai+b}{c}\rfloor-1}1\\ &=\sum\limits_{j=0}^{\lfloor\frac{an+b}{c}\rfloor-1}\sum\limits_{i=0}^{n}[j<\lfloor\frac{ai+b}{c}\rfloor] \end{alignat*} \]

对于这个关系式可以做如下推导:

\[j<\lfloor\frac{ai+b}{c}\rfloor \]

\[j+1\leq \frac{ai+b}{c} \]

\[jc+c\leq ai+b \]

\[ai\geq jc+c-b>jc+c-b-1 \]

\[i>\lfloor\frac{jc+c-b-1}{a}\rfloor \]

回归原式,令 \(m=\lfloor\frac{an-b}{c}\rfloor\)

\[\begin{alignat*}{10000} f(a,b,c,n)&=\sum\limits_{j=0}^{m-1}\sum\limits_{i=0}^{n}[j<\lfloor\frac{ai+b}{c}\rfloor]\\ &=\sum\limits_{j=0}^{m-1}\sum\limits_{i=0}^{n}[i>\lfloor\frac{jc+c-b-1}{a}\rfloor]\\ &=\sum\limits_{j=0}^{m-1}(n-\lfloor\frac{jc+c-b-1}{a}\rfloor)\\ &=nm-f(c,c-b-1,a,m-1)\\ \end{alignat*} \]

总结

\[f(a,b,c,n)= \left\{ \begin{array}{**lr**} s0(n)\lfloor\frac{b}{c}\rfloor & a=0\\ f(a\bmod c,b\bmod c,c,n)+s1(n)\lfloor\frac{a}{c}\rfloor+s0(n)\lfloor\frac{b}{c}\rfloor & a>c \vee b>c\\ nm-f(c,c-b-1,a,m-1) & otherwise\\ \end{array} \right. \]

\(g\) 的推导

Case 1:当 a==0

\[\begin{alignat*}{10000} g(a,b,c,n)&=\sum\limits_{i=0}^{n}i\lfloor\frac{ai+b}{c}\rfloor\\ &=\sum\limits_{i=0}^{n}i\lfloor\frac{b}{c}\rfloor\\ &=s1(n)\lfloor\frac{b}{c}\rfloor \end{alignat*} \]

Case 2:当 a>c||b>c

\[\begin{alignat*}{10000} g(a,b,c,n)&=\sum\limits_{i=0}^{n}i\lfloor\frac{ai+b}{c}\rfloor\\ &=\sum\limits_{i=0}^{n}(i\lfloor\frac{(a\bmod c)i+b\bmod c}{c}\rfloor+i^2\lfloor\frac{a}{c}\rfloor+i\lfloor\frac{b}{c}\rfloor)\\ &=g(a\bmod c,b\bmod c,c,n)+s2(n)\lfloor\frac{a}{c}\rfloor+s1(n)\lfloor\frac{b}{c}\rfloor \end{alignat*} \]

Case 3:当 a<=c&&b<=c

\[\begin{alignat*}{10000} g(a,b,c,n)&=\sum\limits_{i=0}^{n}i\lfloor\frac{ai+b}{c}\rfloor\\ &=\sum\limits_{i=0}^{n}\sum\limits_{j=0}^{\lfloor\frac{ai+b}{c}\rfloor-1}i\\ &=\sum\limits_{j=0}^{\lfloor\frac{an+b}{c}\rfloor-1}\sum\limits_{i=0}^{n}i[j<\lfloor\frac{ai+b}{c}\rfloor] \end{alignat*} \]

\(m=\lfloor\frac{an-b}{c}\rfloor,t=\lfloor\frac{jc+c-b-1}{a}\rfloor\),再利用推导 \(f\) 时的结论继续推导。

\[\begin{alignat*}{10000} g(a,b,c,n)&=\sum\limits_{j=0}^{m-1}\sum\limits_{i=0}^{n}i[j<\lfloor\frac{ai+b}{c}\rfloor]\\ &=\sum\limits_{j=0}^{m-1}\sum\limits_{i=0}^{n}i[i>t]\\ &=\sum\limits_{j=0}^{m-1}(s1(n)-s1(t))\\ &=\sum\limits_{j=0}^{m-1}\frac{n(n+1)-t(t+1)}{2}\\ &=\sum\limits_{j=0}^{m-1}\frac{n(n+1)-t^2-t}{2}\\ &=\frac{nm(n+1)-\sum\limits_{j=0}^{m-1}t^2-\sum\limits_{j=0}^{m-1}t}{2}\\ &=\frac{nm(n+1)-h(c,c-b-1,a,m-1)-f(c,c-b-1,a,m-1)}{2} \end{alignat*} \]

总结

\[g(a,b,c,n)= \left\{ \begin{array}{**lr**} s1(n)\lfloor\frac{b}{c}\rfloor & a=0\\ g(a\bmod c,b\bmod c,c,n)+s2(n)\lfloor\frac{a}{c}\rfloor+s1(n)\lfloor\frac{b}{c}\rfloor & a>c \vee b>c\\ \frac{nm(n+1)-h(c,c-b-1,a,m-1)-f(c,c-b-1,a,m-1)}{2} & otherwise\\ \end{array} \right. \]

\(h\) 的推导

Case 1:当 a==0

\[\begin{alignat*}{10000} h(a,b,c,n)&=\sum\limits_{i=0}^{n}\lfloor\frac{ai+b}{c}\rfloor^2\\ &=\sum\limits_{i=0}^{n}\lfloor\frac{b}{c}\rfloor^2\\ &=s0(n)\lfloor\frac{b}{c}\rfloor^2 \end{alignat*} \]

Case 2:当 a>c||b>c

\[\begin{alignat*}{10000} h(a,b,c,n)&=\sum\limits_{i=0}^{n}\lfloor\frac{ai+b}{c}\rfloor^2\\ &=\sum\limits_{i=0}^{n}(\lfloor\frac{(a\bmod c)i+b\bmod c}{c}\rfloor+i\lfloor\frac{a}{c}\rfloor+\lfloor\frac{b}{c}\rfloor)^2\\ &=\sum\limits_{i=0}^{n}(\lfloor\frac{(a\bmod c)i+b\bmod c}{c}\rfloor^2+i^2\lfloor\frac{a}{c}\rfloor^2+\lfloor\frac{b}{c}\rfloor^2\\ &+2i\lfloor\frac{a}{c}\rfloor\lfloor\frac{(a\bmod c)i+b\bmod c}{c}\rfloor+2\lfloor\frac{b}{c}\rfloor\lfloor\frac{(a\bmod c)i+b\bmod c}{c}\rfloor+2i\lfloor\frac{a}{c}\rfloor\lfloor\frac{b}{c}\rfloor)\\ &=h(a\bmod c,b\bmod c,c,n)+2\lfloor\frac{a}{c}\rfloor g(a\bmod c,b\bmod c,c,n)+2\lfloor\frac{b}{c}\rfloor f(a\bmod c,b\bmod c,c,n)\\ &+s2(n)\lfloor\frac{a}{c}\rfloor^2+s1(n)\lfloor\frac{a}{c}\rfloor\lfloor\frac{b}{c}\rfloor+s0(n)\lfloor\frac{b}{c}\rfloor^2 \end{alignat*} \]

Case 3:当 a<=c&&b<=c

平方项很麻烦,但因为有 \(x^2=2\frac{x(x+1)}{2}-x\),所以我们转换一下。

\[\begin{alignat*}{10000} h(a,b,c,n)&=\sum\limits_{i=0}^{n}\lfloor\frac{ai+b}{c}\rfloor^2\\ &=\sum\limits_{i=0}^{n}(2\sum\limits_{j=1}^{\lfloor\frac{ai+b}{c}\rfloor}j-\lfloor\frac{ai+b}{c}\rfloor)\\ &=2\sum\limits_{i=0}^{n}\sum\limits_{j=0}^{\lfloor\frac{ai+b}{c}\rfloor-1}(j+1)-f(a,b,c,n)\\ &=2\sum\limits_{j=0}^{\lfloor\frac{an+b}{c}\rfloor-1}(j+1)\sum\limits_{i=0}^{n}[j<\lfloor\frac{ai+b}{c}\rfloor]-f(a,b,c,n) \end{alignat*} \]

与推 \(g\) 时一样,令 \(m=\lfloor\frac{an-b}{c}\rfloor,t=\lfloor\frac{jc+c-b-1}{a}\rfloor\),再次利用推导 \(f\) 时的结论继续推导。

\[\begin{alignat*}{10000} h(a,b,c,n)&=2\sum\limits_{j=0}^{m-1}(j+1)\sum\limits_{i=0}^{n}[j<\lfloor\frac{ai+b}{c}\rfloor]-f(a,b,c,n)\\ &=2\sum\limits_{j=0}^{m-1}(j+1)\sum\limits_{i=0}^{n}[i>t]-f(a,b,c,n)\\ &=2\sum\limits_{j=0}^{m-1}(j+1)(n-t)-f(a,b,c,n)\\ &=2\sum\limits_{j=0}^{m-1}((j+1)n-jt-t)-f(a,b,c,n)\\ &=nm(m+1)-2g(c,c-b-1,a,m-1)-2f(c,c-b-1,a,m-1)-f(a,b,c,n) \end{alignat*} \]

总结

\[h(a,b,c,n)= \left\{ \begin{array}{**lr**} s0(n)\lfloor\frac{b}{c}\rfloor^2 & a=0\\ h(a\bmod c,b\bmod c,c,n)\\ +2\lfloor\frac{a}{c}\rfloor g(a\bmod c,b\bmod c,c,n)+2\lfloor\frac{b}{c}\rfloor f(a\bmod c,b\bmod c,c,n)\\ +s2(n)\lfloor\frac{a}{c}\rfloor^2+s1(n)\lfloor\frac{a}{c}\rfloor\lfloor\frac{b}{c}\rfloor+s0(n)\lfloor\frac{b}{c}\rfloor^2 & a>c \vee b>c\\ nm(m+1)-2g(c,c-b-1,a,m-1)-2f(c,c-b-1,a,m-1)-f(a,b,c,n) & otherwise\\ \end{array} \right. \]

posted @ 2024-02-23 15:14  Symbolize  阅读(50)  评论(1)    收藏  举报