当前位置: 首页 > news >正文

类欧几里得算法

∑ i = 0 n ⌊ a i + b c ⌋ \sum\limits_{i=0}^{n}\lfloor \frac{ai+b}{c} \rfloor i=0ncai+b

推式子步骤:

分类讨论

a = 0 a=0 a=0

是个最简式子

b ≥ c b\ge c bc a ≥ c a\ge c ac

f ( a m o d c , b m o d c , c , n ) f(a\bmod c,b\bmod c,c,n) f(amodc,bmodc,c,n) 转移过来,拆一下括号就行

其他情况

M = ⌊ a n + b c ⌋ M=\lfloor\frac{an+b}{c}\rfloor M=can+b

⌊ a i + b c ⌋ = ∑ j = 1 M [ j ≤ ⌊ a i + b c ⌋ ] \lfloor \frac{ai+b}{c} \rfloor=\sum_{j=1}^M [j\le\lfloor\frac{ai+b}{c}\rfloor] cai+b=j=1M[jcai+b⌋]

  1. 拆一下后面的除号
  2. 把所有 j j j 变成 j − 1 j-1 j1
  3. 交换求和顺序
  4. 变成 i > x i>x i>x 的形式
  5. 变成 n − i ≤ x n-i\le x nix 的形式
  6. 后面直接换成 f ( c , c − b − 1 , a , m − 1 ) f(c,c-b-1,a,m-1) f(c,cb1,a,m1)
int floor_sum(int n, int c, int a, int b) {if(a==0) return (n+1)*(b/c); if(a>=c || b>=c) return floor_sum(n, c, a%c, b%c)+n*(n+1)/2*(a/c)+(n+1)*(b/c); int m=(a*n+b)/c; return n*m-floor_sum(m-1, a, c, c-b-1); 
}

对于 ∑ i = 0 n ⌊ a i + b c ⌋ 2 , ∑ i = 0 n i ⌊ a i + b c ⌋ \sum\limits_{i=0}^{n}{\lfloor \frac{ai+b}{c} \rfloor}^2\,,\ \sum\limits_{i=0}^{n}i\lfloor \frac{ai+b}{c} \rfloor i=0ncai+b2, i=0nicai+b 的求解

推的方法类似,不过会互相调用

node floor_sum(int a, int b, int c, int n) {if(a==0) return {(n+1)*(b/c)%p, (n+1)*(b/c)%p*(b/c)%p, n*(n+1)%p*i2%p*(b/c)%p}; if(a>=c || b>=c) {node t=floor_sum(a%c, b%c, c, n); int F=t.f+n*(n+1)%p*i2%p*(a/c)%p+(n+1)*(b/c)%p; int G=t.g+2*t.h%p*(a/c)%p+2*(b/c)%p*t.f%p+n*(n+1)%p*(2*n+1)%p*i6%p*(a/c)%p*(a/c)%p+(n+1)*n%p*(a/c)%p*(b/c)%p+(n+1)*(b/c)%p*(b/c)%p; int H=t.h+n*(n+1)%p*(2*n+1)%p*i6%p*(a/c)%p+n*(n+1)%p*i2%p*(b/c)%p; return {F%p, G%p, H%p}; }int m=(a*n+b)/c; node t=floor_sum(c, c-b-1, a, m-1); int F=n*m%p-t.f; int G=n*m%p*(m+1)%p-2*t.f%p-2*t.h%p-F; int H=(m*n%p*(n+1)%p-t.g-t.f)%p*i2%p; return {F%p, G%p, H%p}; 
}
http://www.lryc.cn/news/156471.html

相关文章:

  • c++读取和存储文件,对文件操作
  • InfluxDB API -- InfluxDB笔记四
  • 数据结构 - 单链表
  • 化繁为简 面板式空调网关亮相上海智能家居展 智哪儿专访青岛中弘赵哲海
  • 4G版本云音响设置教程阿里云平台版本
  • STM32纯中断方式发送接收数据(串行通信;keil arm5;)
  • FPGA时序分析与约束(3)——时钟不确定性
  • 【Java-HDFS】使用Java操作HDFS获取HDFS指定目录下的数据量大小
  • 协议定制 + Json序列化反序列化
  • 系统架构设计师(第二版)学习笔记----系统架构概述
  • FPGA基本算术运算
  • Linux Input子系统
  • commet与websocket
  • python3 简易 http server:实现本地与远程服务器传大文件
  • Microsoft Edge 主页启动diy以及常用的扩展、收藏夹的网站
  • 文末送书!谈谈原型模式在JAVA实战开发中的应用(附源码+面试题)
  • 视频汇聚/视频云存储/视频监控管理平台EasyCVR启动时打印starting server:listen tcp,该如何解决?
  • 【Linux从入门到精通】通信 | 管道通信(匿名管道 命名管道)
  • 实践和项目:解决实际问题时,选择合适的数据结构和算法
  • 上线检查工具(待完善)
  • PE文件格式详解
  • 【Alibaba中间件技术系列】「RocketMQ技术专题」RocketMQ消息发送的全部流程和落盘原理分析
  • 关于vue首屏加载loading问题
  • 数据库性能测试实践:慢查询统计分析
  • windows wsl ssh 配置流程 Permission denied (publickey)
  • OpenCV(五):图像颜色空间转换
  • 一图胜千言!数据可视化多维讲解(Python)
  • Hbase相关总结
  • C++ Primer Plus第二章编程练习答案
  • Web后端开发(请求响应)上