这三个f,g,h让我的脑子快要爆炸,还是终于推了出来,记录一下。

记得初一的时候就无意间在ZJY的PPT翻到了这个东西,当时和WYT推了一波,到现在连个印象都没有。

据说有几何推法,我这么渣肯定是不会的了。

参考博客:Xdl.


定义:

f(a,b,c,n)=∑ni=0⌊ai+bc⌋ f(a,b, c, n) =\sum_{i=0}^n{\lfloor {ai + b \over c} \rfloor}
g(a,b,c,n)=∑ni=0i⌊ai+bc⌋ g(a,b, c, n) =\sum_{i=0}^n i{\lfloor {ai + b \over c} \rfloor}
h(a,b,c,n)=∑ni=0⌊ai+bc⌋2 h(a,b, c, n) =\sum_{i=0}^n {\lfloor {ai + b \over c} \rfloor}^2


f的推导:

设 a′=a mod c,b′=b mod c a'=a~mod ~c,b'=b~mod~c

f(a,b,c,n)=∑ni=0⌊a′i+b′c⌋+⌊ac⌋∗i+⌊bc⌋ f(a,b, c, n) =\sum_{i=0}^n{\lfloor {a'i + b' \over c} \rfloor}+{\lfloor {a\over c} \rfloor}*i+{\lfloor {b\over c} \rfloor}
=f(a′,b′,c,n)+n(n+1)/2∗⌊ac⌋+(n+1)∗⌊bc⌋ = f(a',b',c, n) +n(n+1)/2*{\lfloor {a \over c}\rfloor}+(n+1)*{\lfloor {b \over c}\rfloor}

进过上面这个调整后可以使 a,b<c a,b,这也是为什么它叫类欧几里得算法的原因,从最终的式子可以看出来这点。

设 m=⌊an+bc⌋ m={\lfloor {an + b \over c} \rfloor}。

f(a,b,c,n) f(a,b, c,n)
=∑ni=0⌊ai+bc⌋ =\sum_{i=0}^n{\lfloor {ai + b \over c} \rfloor}
=∑mj=1∑ni=0[⌊ai+bc⌋>=j] =\sum_{j=1}^{m}\sum_{i=0}^n[{\lfloor {ai + b \over c} \rfloor}>=j]
=∑m−1j=0∑ni=0[⌊ai+bc⌋>=j+1] =\sum_{j=0}^{m-1}\sum_{i=0}^n[{\lfloor {ai + b \over c} \rfloor}>=j+1]
=∑m−1j=0∑ni=0[ai>=jc+c−b] =\sum_{j=0}^{m-1}\sum_{i=0}^n[ai>=jc+c-b]
=∑m−1j=0∑ni=0[ai>jc+c−b−1] =\sum_{j=0}^{m-1}\sum_{i=0}^n[ai>jc+c-b-1]
=∑m−1j=0∑ni=0[i>⌊jc+c−b−1a⌋] =\sum_{j=0}^{m-1}\sum_{i=0}^n[i>{\lfloor {jc+c-b-1 \over a}}\rfloor]
=∑m−1j=0n−⌊jc+c−b−1a⌋ =\sum_{j=0}^{m-1}n-{\lfloor {jc+c-b-1 \over a}}\rfloor
=nm−∑m−1j=0⌊jc+c−b−1a⌋ =nm-\sum_{j=0}^{m-1}{\lfloor {jc+c-b-1 \over a}}\rfloor
=nm−f(c,c−b−1,a,m−1) =nm-f(c,c-b-1,a,m-1)

这个可以直接递归去求。我设的边界是m=0。

发现a,c的位置互换了。因为a是已经mod过c的了,所以这和欧几里得算法的复杂度是一模一样的。


g的推导:

g(a,b,c,n)=∑ni=0∑ni=0i∗⌊a′i+b′c⌋+⌊ac⌋∗i2+⌊bc⌋∗i g(a,b,c,n)=\sum_{i=0}^n\sum_{i=0}^ni*{\lfloor {a'i + b' \over c} \rfloor}+{\lfloor {a\over c} \rfloor}*i^2+{\lfloor {b\over c} \rfloor}*i
=g(a′,b′,c,n)+n(n+1)(2n+1)/6∗⌊ac⌋+n(n+1)/2∗⌊bc⌋ =g(a',b',c, n) +n(n+1)(2n+1)/6*{\lfloor {a \over c}\rfloor}+n(n+1)/2*{\lfloor {b \over c}\rfloor}
接下来的变换和f类似,跳一下步:
g(a,b,c,n) g(a,b,c,n)
=∑m−1j=0∑ni=0i∗[i>⌊jc+c−b−1a⌋] =\sum_{j=0}^{m-1}\sum_{i=0}^ni*[i>{\lfloor {jc+c-b-1 \over a}}\rfloor]
到这里,实际上可以用个等差数列搞搞。
=∑m−1j=0(n−⌊jc+c−b−1a⌋)(n+⌊jc+c−b−1a⌋+1)/2 =\sum_{j=0}^{m-1} (n-{\lfloor {jc+c-b-1 \over a}}\rfloor)(n+{\lfloor {jc+c-b-1 \over a}}\rfloor+1)/2
=12∑m−1j=0n(n+1)−⌊jc+c−b−1a⌋−⌊jc+c−b−1a⌋2 ={1 \over 2}\sum_{j=0}^{m-1} n(n+1)-\lfloor {jc+c-b-1 \over a}\rfloor-{\lfloor {jc+c-b-1 \over a}\rfloor}^2
=12(mn(n+1)−f(c,c−b−1,a,m−1)−h(c,c−b−1,a,m−1)) ={1 \over 2}(mn(n+1)-f(c,c-b-1,a,m-1)-h(c,c-b-1,a,m-1))


h的推导:

h(a,b,c,n)=(∑ni=0⌊a′i+b′c⌋+⌊ac⌋∗i+⌊bc⌋)2 h(a,b,c,n)=({\sum_{i=0}^n{\lfloor {a'i + b' \over c} \rfloor}+{\lfloor {a\over c} \rfloor}*i+{\lfloor {b\over c} \rfloor}})^2
=h(a′,b′,c,n) =h(a',b',c, n)
+n(n+1)(2n+1)/6∗⌊ac⌋+(n+1)∗⌊bc⌋ +n(n+1)(2n+1)/6*{\lfloor {a \over c}\rfloor}+(n+1)*{\lfloor {b \over c}\rfloor}
+2⌊bc⌋∗f(a′,b′,c,n)+2⌊ac⌋∗g(a′,b′,c,n) +2{\lfloor {b \over c}\rfloor}*f(a',b',c, n)+2{\lfloor {a \over c}\rfloor}*g(a',b',c, n)
+n(n+1)⌊ac⌋⌊bc⌋ +n(n+1){\lfloor {a \over c}\rfloor}{\lfloor {b \over c}\rfloor}

一种有用的写法: x2=(2∑xi=0i)−x x^2=(2\sum_{i=0}^x i) - x

h(a,b,c,n)=∑ni=0(2(∑⌊ai+bc⌋j=1j)−⌊ai+bc⌋) h(a,b,c,n)=\sum_{i=0}^n(2(\sum_{j=1}^{{\lfloor {ai + b \over c} \rfloor}}j)-{\lfloor {ai + b \over c} \rfloor})
=2(∑m−1j=0(j+1)∑ni=0[⌊ai+bc⌋>=j+1])−f(a,b,c,n) =2(\sum_{j=0}^{m-1}(j+1)\sum_{i=0}^n[{\lfloor {ai + b \over c}\rfloor }>=j+1])-f(a,b,c,n)
=2(∑m−1j=0j∑ni=0[⌊ai+bc⌋>=j+1])+2(∑m−1j=0∑ni=0[⌊ai+bc⌋>=j+1])−f(a,b,c,n) =2(\sum_{j=0}^{m-1}j\sum_{i=0}^n[{\lfloor {ai + b \over c}\rfloor }>=j+1])+2(\sum_{j=0}^{m-1}\sum_{i=0}^n[{\lfloor {ai + b \over c}\rfloor }>=j+1])-f(a,b,c,n)
=2(∑m−1j=0j∑ni=0[i>⌊jc−c−b−1a⌋])+2(∑m−1j=0∑ni=0[i>⌊jc−c−b−1a⌋])−f(a,b,c,n) =2(\sum_{j=0}^{m-1}j\sum_{i=0}^n[i>\lfloor{jc-c-b-1\over a}\rfloor])+2(\sum_{j=0}^{m-1}\sum_{i=0}^n[i>\lfloor{jc-c-b-1\over a}\rfloor])-f(a,b,c,n)
=2(∑m−1j=0j∗(n−⌊jc−c−b−1a⌋)+2(∑m−1j=0n−⌊jc−c−b−1a⌋)−f(a,b,c,n) =2(\sum_{j=0}^{m-1}j*(n-\lfloor{jc-c-b-1\over a}\rfloor)+2(\sum_{j=0}^{m-1}n-\lfloor{jc-c-b-1\over a}\rfloor)-f(a,b,c,n)
=m(m−1)n−2g(c,c−b−1,a,m−1)+2mn−2f(c,c−b−1,a,m−1)−f(a,b,c,n) =m(m-1)n-2g(c,c-b-1,a,m-1)+2mn-2f(c,c-b-1,a,m-1)-f(a,b,c,n)
=m(m+1)n−2g(c,c−b−1,a,m−1)−2f(c,c−b−1,a,m−1)−f(a,b,c,n) =m(m+1)n-2g(c,c-b-1,a,m-1)-2f(c,c-b-1,a,m-1)-f(a,b,c,n)

至此,三种常见的形式已经弄完。

实现的话只求f还好,由于g和h相互调用,可能要用结构体来存。

代码的话暂时没有。

类欧几里得算法乱搞记相关推荐

  1. #138. 类欧几里得算法

    #138. 类欧几里得算法 以下除法均为向下取整, 定义f(a,b,c,n,k1,k2)=∑x=0nxk1(a×x+bc)k2f(a, b, c, n, k_1, k_2) = \sum\limits ...

  2. 类欧几里得算法详细推导过程(附带模板)

    类欧几里得算法推导 初识 给出三种形式: f(a,b,c,n)=∑i=0n⌊ai+bc⌋f(a, b, c, n) = \sum_{i = 0} ^{n} \lfloor\frac{ai + b}{c ...

  3. 【清华集训2014】Sum)(类欧几里得算法)

    [清华集训2014]Sum 然后本质上我们需要求解的就是那个带根号式子的奇偶性,然后我们发现这个式子很像是类欧几里得算法,求解一个斜率为无理数直线下的整点个数,然后我们直接对于一般形式求解,那么就是每 ...

  4. P5170 【模板】类欧几里得算法

    P5170 [模板]类欧几里得算法 https://www.cnblogs.com/bztMinamoto/p/10334354.html 对于类欧几里得算法,本质上可以理解为一条直线下的整点个数,是 ...

  5. P5170 【模板】类欧几里得算法(类欧)

    P5170 [模板]类欧几里得算法 Description 要求在O(lgn)O(lgn)O(lgn)的时间内求出: ∑i=0n⌊ai+bc⌋\sum_{i = 0}^n{\lfloor\frac{a ...

  6. 数学基础4 Euler函数 二次剩余 米拉质数测试 波拉德的罗 类欧几里得算法 Stern-Brocot树

    主要写于2018.9 欧拉函数 奇偶性 2∣φ(n)⇔n≠22|\varphi(n)\Leftrightarrow n =\not 22∣φ(n)⇔n≠​2 约数拆分 φ(pq)=φ(p)φ(q) ...

  7. 【BZOJ1236】KPSUM,记数类问题(乱搞)

    传送门 权限题,放一下题面 1236: SPOJ1433 KPSUM Time Limit: 1 Sec Memory Limit: 162 MB Submit: 163 Solved: 87 [Su ...

  8. 2021牛客多校9 A Math Challenge(类欧几里得算法+自然数幂前缀和)

    题意 求 ∑i=0n∑j=1⌊ai+bc⌋ipjq\sum\limits_{i=0}^{n}\sum\limits_{j=1}^{\lfloor\frac{ai+b}{c}\rfloor}i^pj^q ...

  9. WC2018 乱搞记划雪记

    pku WC 一月的长沙,久违地下了场雪,不,确切地说,是下了冰渣子.所有的道路和池塘都被冻得硬邦邦的,从寝室可以一路溜冰到科艺楼楼下. 正好赶上期末考试,据说下雪是为了衬托人物悲伤的心情. 不过一只 ...

最新文章

  1. 推荐系统炼丹笔记:Deep Retrieval
  2. java增加内容辅助_Eclipse代码自动提示(内容辅助content assist)
  3. MongoDB与Spring Data项目
  4. Linux信号处理机制
  5. 图像模糊处理(信息学奥赛一本通-T1128)
  6. 自定义标签TLD文件中,rtexprvalue子标签的意思
  7. FISCO BCOS同步模块的优化策略
  8. SpringApplication#run⽅法第5步,打印banner(四)
  9. 关于一些初级ACM竞赛题目的分析和题解(九)
  10. 计算机专业实习心得,计算机毕业实习心得体会范本5篇
  11. 央视《家有妙招》整理版,共250招,值得收藏
  12. ab变频器22b用户手册_AB变频器22B-D4P0N104
  13. A4纸在屏幕上的像素尺寸
  14. Git 修改前面提交commit的名字
  15. ROS工业机器人和工业自动化竞赛ARIAC 2021即将启动
  16. Creating orkut style status update div-textbox using jQuery
  17. python怎么自动生成文档_用 Python 自动生成 Word 文档
  18. 让开发者成为决定性力量,华为开发者英雄汇圆满落幕
  19. 常用数据库jdbc连接池的配置(在spring中的配置)
  20. app提示已到期_打开用友软件,提示演示期已到期。

热门文章

  1. 【面经】联想大数据开发面经
  2. 力扣解法汇总2038- 如果相邻两个颜色均相同则删除当前颜色
  3. Photoshop插件--新建文档--嵌入智能对象--复制图像--脚本开发--PS插件
  4. ios14降级服务器修复了吗,iOS14降级失败无法退出恢复模式怎么办?
  5. 真我手机可以装鸿蒙系统,倒计时10天!鸿蒙系统传来好消息,华为大招正式亮相...
  6. egg extend ts_电竞6.13日王者荣耀KPL:总决赛TS对阵AG超玩会
  7. MySQL数据库的初步了解
  8. UE4 时间膨胀,慢动作(蓝图)
  9. Flask 实现分页展示数据(简单套路)
  10. 如何将A列相同的数据所对应的B列多行数据合并至一行