首页 > 编程语言 >类欧几里得算法学习笔记

类欧几里得算法学习笔记

时间:2022-12-31 17:56:11浏览次数:37  
标签:lfloor frac limits ai 欧几里得 笔记 算法 rfloor sum

题目

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

题解

当 \(a\ge c\) 或 \(b\ge c\) 时,
\(\begin{aligned} \sum\limits_{i=0}^n\lfloor\frac{ai+b}c\rfloor & = \sum\limits_{i=0}^n\lfloor\frac ac\rfloor i+\lfloor\frac bc\rfloor+\lfloor\tfrac{(a\bmod c)i+b\bmod c}c\rfloor \\ & =\lfloor\frac ac\rfloor(\frac 12n(n+1))+(n+1)\lfloor\frac cb\rfloor+f(a\bmod c,b\bmod c,c,n) \end{aligned}\)

那么此时就满足 \(a<c,b<c\) 了。然后
\(\begin{aligned} \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 \end{aligned}\)
为了方便,设 \(m=\lfloor\frac{an+b}c\rfloor\)
\( \begin{aligned} 原式=\sum\limits_{j=0}^{m-1}\sum\limits_{i=0}^n[j<\lfloor\frac{ai+b}c\rfloor] \end{aligned}\)

给这个式子略微变一下形

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

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

\[i>\frac{cj+c-b-1}a \]

\(\begin{aligned} \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{cj+c-b-1}a\rfloor]\\&=\sum\limits_{i=0}^{m-1}n-\lfloor\frac{cj+c-b-1}a\rfloor\\&=nm-f(c,c-b-1,a,m-1) \end{aligned}\)

复杂度的话,因为这样每次将 \(a,c\) 交换,然后取模,这样的形式和欧几里得算法极其相似,复杂度是 \(O(\log a)\) 的。同时递归边界是 \(a=0\),答案就不用讲了吧。

题目

来看一下进阶版
\(g(a,b,c,n)=\sum\limits_{i=0}^ni\lfloor\frac{ai+b}c\rfloor\)
\(h(a,b,c,n)=\sum\limits_{i=0}^n\lfloor\frac{ai+b}c\rfloor^2\)

题解

未完待续

标签:lfloor,frac,limits,ai,欧几里得,笔记,算法,rfloor,sum
From: https://www.cnblogs.com/mekoszc/p/17016987.html

相关文章

  • Rust中的生命周期注解 - 学习笔记
    Rust生命周期注解是为了保证【依赖有效】简单地说:假设变量a依赖于b,那么b的生命周期应该大于a,否则不安全。 Rust中生命周期注解的用法示例1//通过'a标注相同的生命......
  • 做算法的这一年——2022年个人年终总结
    做算法的这一年——2022年个人年终总结前言​ 按照往年的惯例和园子的规矩,随着网易云音乐以及众多App的个人使用报告陆续出来,也到了自己该做个全年复盘总结的时候了。这......
  • 从零开始学node.js笔记 02
    一、node.js中http模块http模块是Node.js官方提供的、用来创建web服务器的模块。通过http模块提供的http.createServer()方法,就能方便的把一台普通的电脑变成一台Web服务器,......
  • 算法刷题 Day 4 | 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.0
    24.两两交换链表中的节点用虚拟头结点,这样会方便很多。Tips:注意先把边界条件排除,然后注意可能会出现null的情况。我的题解:/***Definitionforsingly-linked......
  • 遗传算法解决函数优化问题
    遗传算法解决函数优化问题作者:Cukor丘克环境:MatlabR2020a+vscode为什么要学习遗传算法为什么要学习遗传算法,或者说遗传算法有什么厉害的地方。例如求解以下函......
  • leetcode笔记——二分图
    785.判断二分图-力扣(LeetCode)二分图实际上就是这个图里所有的环都是偶数个边,一般采取染色法来做通过dfs判断每个节点与其邻居节点是否是同一种颜色,如果有的话,那就一定......
  • sqlite熟悉笔记
    sqlite在mac中是不需要安装的,只需要命令sqlite3就行了。所有数据内容都存放在一个文件中,非常方便。sqlite的一个教程:https://www.runoob.com/sqlite/sqlite-tutorial.htm......
  • MATLAB笔记[4]-建模方法
    建模一般步骤[https://www.bilibili.com/video/BV1Gf4y1p79P?p=5]创建模型设计控制器验证设计实际部署Simulink控制系统建模建模控制对象系统建模的途径首要......
  • MATLAB笔记[3]-MPPT算法
    保命声明:笔者代码能力有限,若行文中有错漏之处欢迎大家指出。MPPT算法[https://ww2.mathworks.cn/solutions/power-electronics-control/mppt-algorithm.html?s_tid=srcht......
  • 每日算法之字符流中第一个不重复的字符
    JZ75字符流中第一个不重复的字符题目请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"......