首页 > 编程语言 >类欧几里得算法

类欧几里得算法

时间:2023-08-14 19:26:22浏览次数:30  
标签:lfloor right dfrac 欧几里得 rfloor 算法 sum left

类欧几里得算法

定义

\[\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}\]

标签:lfloor,right,dfrac,欧几里得,rfloor,算法,sum,left
From: https://www.cnblogs.com/User-Unauthorized/p/euclidean.html

相关文章

  • 编程题算法总结
    求最大公约数最小公倍数最大公约数辗转相除法大的a除小的b,得到余数如果是0,那么b就是最大公约数,否则就取余数做那个小的,本来的b就成了大的继续操作。intn,m;//辗转相除法,ab最大公约数=ab余数和b的最大公约数intyu,a,b;a=n>m?n:m;b=n>m?m:n......
  • 位运算 学习笔记【C++ 算法竞赛】
    大家好,欢迎来到我的第一篇博客位运算和移位运算作为计算机的基本运算之⼀,其都是对⼆进制位进⾏操作。作为近年算法竞赛笔试较热门的考点,它能够快捷地完成特定的应用。掌握它是⾮常有必要的。以下是目录:目录1.位运算的优先级2.左移运算<<、右移运算>>2.1运算规则:2.2应用:......
  • 路径规划算法:基于人工蜂鸟优化的机器人路径规划算法- 附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 路径规划算法:基于协作搜索优化的机器人路径规划算法- 附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 深入解析美颜SDK:算法、效果与实现
    在当今数字化社会中,图像处理和美化技术已经成为了许多应用领域的重要组成部分,尤其在视频直播领域,美颜技术更是无处不在。直播美颜SDK作为一种集成的软件工具包,为开发者和应用提供了强大的美颜功能。一、算法原理磨皮算法通过降低图像中的高频细节,达到皮肤更光滑的效果。美白算法调......
  • 优化:深度学习优化算法
    1、mini-batch2、动量梯度下降3、RMSprophttps://zhuanlan.zhihu.com/p/22252270https://www.zhihu.com/question/558431624、Adamhttps://zhuanlan.zhihu.com/p/222522705、学习率衰减6、调参https://www.leiphone.com/news/201703/pmFP0IKt3JxuAtDs.htmlhttp://www.mamicode.com/......
  • 数据结构与算法 --- 如何分析排序算法
    引言排序算法是最基础的算法,对于排序算法,除学习算法原理,代码实现之外,更重要的是学习每个算法的特点,知道在什么场景下选择那种算法。那一定是选择时间复杂度最低的排序算法就是最优的吗?可以从以下几个方面分析一下。排序算法的执行效率对于排序算法的执行效率,一般从以下几个方......
  • Chameleon算法的C语言实现及代码解析
    Chameleon算法的C语言实现及代码解析在计算机科学领域中,算法的设计和实现是非常重要的。而在大量的算法中,Chameleon算法以其独特的特点和应用广泛受到了研究者们的关注。本文将围绕Chameleon算法的C语言实现及其代码解析展开,通过具体的示例来解释其原理和应用。Chameleon算法的C......
  • 推荐搜索算法论文速读1
    n-gram模型参考:https://zhuanlan.zhihu.com/p/32829048简介:一个句子或者一个联想词语,可以使用链式规则建模,利用马尔科夫链的假设(当前词语的产生只与前n个词语产生的概率相关)。n-gram中的n指的就是马尔科夫链假设中的长度。定义:一元模型unigrammodel,二元模型bigrammodel,三元......
  • C语言求凸包的算法及实现
    C语言求凸包的算法及实现凸包问题是计算几何中的一个重要问题,它描述了一个点集中最小的凸多边形。在本文中,我们将探讨使用C语言来解决凸包问题的算法及其实现。C语言求凸包的算法及实现凸包算法的关键在于如何确定一个点是否在凸包上。对于一个给定的点集,我们可以选择一点作为......