类欧几里得算法

类欧几里得算法

定义

\[\displaystyle\begin{aligned} f(a,b,c,n) &= \sum\limits_{i = 0}^{n}\left\lfloor\dfrac{ai + b}{c}\right\rfloor \\ g(a,b,c,n) &= \sum\limits_{i = 0}^{n}{\left\lfloor\dfrac{ai + b}{c}\right\rfloor}^2 \\ h(a,b,c,n) &= \sum\limits_{i = 0}^{n}i\left\lfloor\dfrac{ai + b}{c}\right\rfloor \end{aligned}\]

给定 \(n,a,b,c\),求 \(f(a,b,c,n),g(a,b,c,n),h(a,b,c,n)\),对 \(998244353\) 取模(\(1 \le T \le 10^5,0 \le n,a,b,c \le 10^9, c \neq 0\))。

考虑函数 \(f\)。首先考虑 \(a > c \lor b > c\) 的情况

\[\displaystyle \begin{aligned} f(a,b,c,n) &= \sum\limits_{i = 0}^{n}\left\lfloor\dfrac{ai + b}{c}\right\rfloor \\ &= \sum\limits_{i = 0}^{n}\left\lfloor\dfrac{{(\left\lfloor\dfrac{a}{c}\right\rfloor c + a \bmod c)i + \left\lfloor\dfrac{b}{c}\right\rfloor c + b \bmod c}}{c}\right\rfloor \\ &= \sum\limits_{i = 0}^{n}(\left\lfloor\dfrac{a}{c}\right\rfloor i + \left\lfloor\dfrac{b}{c}\right\rfloor + \left\lfloor\dfrac{(a \bmod c) i + (b \bmod c)}{c}\right\rfloor) \\ &= \dfrac{n(n + 1)}{2}\left\lfloor\dfrac{a}{c}\right\rfloor + (n + 1)\left\lfloor\dfrac{b}{c}\right\rfloor + \sum\limits_{i = 0}^{n}\left\lfloor\dfrac{{a \bmod ci + b \bmod c}}{c}\right\rfloor \\ &= \dfrac{n(n + 1)}{2}\left\lfloor\dfrac{a}{c}\right\rfloor + (n + 1)\left\lfloor\dfrac{b}{c}\right\rfloor + f(a \bmod c,b \bmod c, c, n) \\ \end{aligned}\]

接下来考虑 \(a \le c \land b \le c\) 的情况

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

考虑限制条件 \(j < \left\lfloor\frac{ai + b}{c}\right\rfloor\)

\[\displaystyle \begin{aligned} j < \left\lfloor\frac{ai + b}{c}\right\rfloor & \Leftrightarrow j < \frac{ai + b}{c} \\ & \Leftrightarrow j + 1 \le \frac{ai + b}{c} \\ & \Leftrightarrow jc + c \le ai + b \\ & \Leftrightarrow jc + c - b \le ai \\ & \Leftrightarrow jc + c - b - 1 < ai \\ & \Leftrightarrow \dfrac{jc + c - b - 1}{a} < i \\ & \Leftrightarrow \left\lfloor\dfrac{jc + c - b - 1}{a}\right\rfloor < i \end{aligned}\]

\(\displaystyle m = \left\lfloor\frac{an + b}{c}\right\rfloor,t = \left\lfloor\dfrac{jc + c - b - 1}{a}\right\rfloor\),则

\[\displaystyle \begin{aligned} f(a,b,c,n) &= \sum\limits_{j = 0}^{\left\lfloor\frac{an + b}{c}\right\rfloor - 1}\sum\limits_{i = 0}^{n}{\left[j < \left\lfloor\frac{ai + b}{c}\right\rfloor \right]} \\ &= \sum\limits_{j = 0}^{m - 1}\sum\limits_{i = 0}^{n}{\left[i > t\right]} \\ &= \sum\limits_{j = 0}^{m - 1}(n - t) \\ &= nm - \sum\limits_{j = 0}^{m - 1}\left\lfloor\dfrac{jc + c - b - 1}{a}\right\rfloor \\ &= nm - f(c,c - b - 1, a, m - 1) \end{aligned}\]

观察到当 \(a > c\) 时,\(a \rightarrow a \bmod c\);当 \(a \le c\) 时,\(a,c\) 互换位置,故复杂度为 \(\mathcal{O}(\log\max(a,c))\)


考虑函数 \(g\)。首先考虑 \(a > c \lor b > c\) 的情况

\[\displaystyle \begin{aligned} g(a,b,c,n) &= \sum\limits_{i = 0}^{n}{\left\lfloor\dfrac{ai + b}{c}\right\rfloor}^2 \\ &= \sum\limits_{i = 0}^{n}{\left\lfloor\dfrac{{(\left\lfloor\dfrac{a}{c}\right\rfloor c + a \bmod c)i + \left\lfloor\dfrac{b}{c}\right\rfloor c + b \bmod c}}{c}\right\rfloor}^2 \\ &= \sum\limits_{i = 0}^{n}(\left\lfloor\dfrac{a}{c}\right\rfloor i + \left\lfloor\dfrac{b}{c}\right\rfloor + \left\lfloor\dfrac{(a \bmod c) i + (b \bmod c)}{c}\right\rfloor)^2 \\ &= \dfrac{n(n + 1)(2n + 1)}{6}\left\lfloor\dfrac{a}{c}\right\rfloor^2 + \dfrac{n(n + 1)}{2}\left\lfloor\dfrac{b}{c}\right\rfloor^2 + g(a \bmod c,b \bmod c, c, n) \\ &+ \dfrac{n(n + 1)}{2}\left\lfloor\dfrac{a}{c}\right\rfloor\left\lfloor\dfrac{b}{c}\right\rfloor+ 2 \left\lfloor\dfrac{a}{c}\right\rfloor h(a \bmod c,b \bmod c, c, n) + 2 \left\lfloor\dfrac{b}{c}\right\rfloor f(a \bmod c,b \bmod c, c, n) \end{aligned}\]

接下来考虑 \(a \le c \land b \le c\) 的情况,观察到

\[n^2 = 2\dfrac{n(n + 1)}{2} - n = 2\left(\sum_{i = 1}^{n}i\right) - n \]

那么

\[\displaystyle \begin{aligned} g(a,b,c,n) &= \sum\limits_{i = 0}^{n}{\left\lfloor\dfrac{ai + b}{c}\right\rfloor}^2 \\ &= \sum\limits_{i = 0}^{n}\left[2\left(\sum\limits_{j=1}^{\left\lfloor\frac{ai + b}{c}\right\rfloor}j\right) - {\left\lfloor\frac{ai + b}{c}\right\rfloor} \right] \\ \end{aligned}\]

考虑处理 \(\displaystyle \sum\limits_{i = 0}^{n}\sum\limits_{j=1}^{\left\lfloor\frac{ai + b}{c}\right\rfloor}j\),记 \(\displaystyle m = \left\lfloor\frac{an + b}{c}\right\rfloor,t = \left\lfloor\dfrac{jc + c - b - 1}{a}\right\rfloor\)

\[\displaystyle \begin{aligned} & \sum\limits_{i = 0}^{n}\sum\limits_{j=1}^{\left\lfloor\frac{ai + b}{c}\right\rfloor}j \\ =& \sum\limits_{i = 0}^{n}\sum\limits_{j=0}^{\left\lfloor\frac{ai + b}{c}\right\rfloor - 1}\left(j + 1\right) \\ =& \sum\limits_{j = 0}^{m - 1}\left(j + 1\right)\sum\limits_{i = 0}^{n}\left[i > t\right] \\ =& \sum\limits_{j = 0}^{m - 1}\left(j + 1\right)\left(n - t\right) \\ =& \dfrac{1}{2}nm(m + 1) + h(c,c - b - 1,a,m - 1) - f(c,c - b - 1,a,m - 1) \end{aligned}\]

那么

\[\displaystyle \begin{aligned} g(a,b,c,n) &= \sum\limits_{i = 0}^{n}\left[2\left(\sum\limits_{j=1}^{\left\lfloor\frac{ai + b}{c}\right\rfloor}j\right) - {\left\lfloor\frac{ai + b}{c}\right\rfloor} \right] \\ &= nm(m + 1) + 2h(c,c - b - 1,a,m - 1) - 2f(c,c - b - 1,a,m - 1) + f(a,b,c,n) \end{aligned}\]


考虑函数 \(h\)。首先考虑 \(a > c \lor b > c\) 的情况

\[\displaystyle \begin{aligned} h(a,b,c,n) &= \sum\limits_{i = 0}^{n}i\left\lfloor\dfrac{ai + b}{c}\right\rfloor \\ &= \sum\limits_{i = 0}^{n}i\left\lfloor\dfrac{{(\left\lfloor\dfrac{a}{c}\right\rfloor c + a \bmod c)i + \left\lfloor\dfrac{b}{c}\right\rfloor c + b \bmod c}}{c}\right\rfloor \\ &= \sum\limits_{i = 0}^{n}i(\left\lfloor\dfrac{a}{c}\right\rfloor i + \left\lfloor\dfrac{b}{c}\right\rfloor + \left\lfloor\dfrac{(a \bmod c) i + (b \bmod c)}{c}\right\rfloor) \\ &= \dfrac{n(n + 1)(2n + 1)}{6}\left\lfloor\dfrac{a}{c}\right\rfloor + \dfrac{n(n + 1)}{2}\left\lfloor\dfrac{b}{c}\right\rfloor + \sum\limits_{i = 0}^{n}i\left\lfloor\dfrac{{a \bmod ci + b \bmod c}}{c}\right\rfloor \\ &= \dfrac{n(n + 1)(2n + 1)}{6}\left\lfloor\dfrac{a}{c}\right\rfloor + \dfrac{n(n + 1)}{2}\left\lfloor\dfrac{b}{c}\right\rfloor + h(a \bmod c,b \bmod c, c, n) \\ \end{aligned}\]

接下来考虑 \(a \le c \land b \le c\) 的情况,记 \(\displaystyle m = \left\lfloor\frac{an + b}{c}\right\rfloor,t = \left\lfloor\dfrac{jc + c - b - 1}{a}\right\rfloor\)

\[\displaystyle \begin{aligned} h(a,b,c,n) &= \sum\limits_{i = 0}^{n}i\left\lfloor\dfrac{ai + b}{c}\right\rfloor \\ &= \sum\limits_{j = 0}^{m - 1}\sum_{i = 0}^{n}\left[i > t\right]i \\ &= \sum\limits_{j = 0}^{m - 1}\dfrac{(n + t + 1)(n - t)}{2} \\ &= \dfrac{1}{2}\left[mn(n + 1) - \sum\limits_{i = 0}^{n}t^2 - \sum\limits_{i = 0}^{n}t\right] \\ &= \dfrac{1}{2}\left[mn(n + 1) - g(c,c - b - 1,a,m - 1) - f(c,c - b - 1,a,m - 1)\right] \\ \end{aligned}\]

posted @ 2023-08-14 19:05  User-Unauthorized  阅读(20)  评论(1编辑  收藏  举报