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

[数论](a % MOD + b % MOD) % MOD = (a + b) % MOD

这个等式成立是因为模运算的加法性质,即模运算在加法操作下具有分配性。我们可以从数学上证明这个等式:


证明:​

设 a 和 b 是任意整数,MOD 是一个正整数。我们需要证明:

(a % MOD + b % MOD) % MOD=(a+b) % MOD

步骤 1:定义余数

我们可以将 a 和 b 表示为:

a=q1​⋅MOD+r1​(其中 0≤r1​<MOD)

b=q2​⋅MOD+r2​(其中 0≤r2​<MOD)

其中:

  • r1 = a % MODa 对 MOD 取余的结果)
  • r2 = b % MODb 对 MOD 取余的结果)
​步骤 2:计算 (a % MOD + b % MOD) % MOD

a % MOD+b % MOD=r1​+r2​

如果 r1 + r2 < MOD,那么:

(r1​+r2​) % MOD=r1​+r2​

如果 r1 + r2 >= MOD,那么:

(r1​+r2​) % MOD=(r1​+r2​)−MOD*n

​步骤 3:计算 (a + b) % MOD

a+b=(q1​⋅MOD+r1​)+(q2​⋅MOD+r2​)=(q1​+q2​)⋅MOD+(r1​+r2​)

因此:

(a+b) % MOD=(r1+r2) = (r1​+r2​) % MOD

步骤 4:比较两者

(a % MOD+b % MOD) % MOD=(r1​+r2​) % MOD

(a+b) % MOD=(r1​+r2​) % MOD

所以:

(a % MOD+b % MOD) % MOD=(a+b) % MOD


直观理解

  • a % MOD 表示 a 去掉尽可能多的 MOD 后剩下的部分(即 a 在 [0, MOD-1] 范围内)。
  • b % MOD 同理。
  • 它们的和 (a % MOD + b % MOD) 可能超过 MOD,所以需要再取一次模,确保结果在 [0, MOD-1] 范围内。
  • 而 (a + b) % MOD 也是去掉 a + b 中所有的 MOD 后剩下的部分,所以两者等价。

为什么这个性质在算法中很重要?​

在算法竞赛和大数计算中,我们经常需要对大数取模,以避免数值溢出(如 C++ 的 int 溢出)或提高计算效率(如 Python 的大数计算较慢)。
这个性质允许我们:

  1. 先对部分结果取模,再相加,最后再取模,而不会影响最终结果。
  2. 减少中间计算过程的数值大小,防止溢出或降低计算复杂度。

示例

假设 MOD = 7a = 10b = 8

a % MOD=10 % 7=3b % MOD=8 % 7=1(3+1) % 7=4 % 7=4(10+8) % 7=18 % 7=4

两者结果相同,验证了等式成立。


总结

这个等式成立是因为模运算在加法操作下具有分配性,允许我们先取模再相加,而不会影响最终结果。这在算法优化中非常有用,可以避免大数计算并提高效率。

http://www.lqws.cn/news/575227.html

相关文章:

  • 【系统分析师】高分论文:论软件开发模型及应用
  • 引入的js文件里有过引用vue,在外侧仍需再写一次吗
  • 【C++】C++的虚析构函数
  • leetcode437-路径总和III
  • 【Flask开发】嘿马文学web完整flask项目第2篇:2.用户认证,Json Web Token(JWT)【附代码文档】
  • 桌面小屏幕实战课程:DesktopScreen 17 HTTPS
  • 熟悉 PyCharm
  • Tomcat服务概述
  • 用户行为序列建模(篇六)-【阿里】DSIN
  • Python爬虫-爬取汽车之家全部汽车品牌及车型数据
  • Linux下基于C++11的socket网络编程(基础)个人总结版
  • 应用层网络编程范式
  • 现代 JavaScript (ES6+) 入门到实战(五):告别回调地狱,Promise 完全入门
  • Origin绘制复合子母饼状图—复合柱饼图、复合环饼图及复合饼图
  • 爬虫实战之图片及人物信息爬取
  • 【IQA技术专题】大模型视觉强化学习IQA:Q-Insight
  • 数据同步工具对比:Canal、DataX与Flink CDC
  • 第二届 Parloo杯 应急响应学习——畸形的爱
  • Mybatis的修改(update)操作
  • 【Linux庖丁解牛】— 文件系统!
  • cJSON 使用方法详解
  • 浅谈AI大模型-MCP
  • 机器学习在智能电网中的应用:负荷预测与能源管理
  • Nginx漏洞处理指南
  • Leetcode 3598. Longest Common Prefix Between Adjacent Strings After Removals
  • 第8篇:Gin错误处理——让你的应用更健壮
  • 【Typst】自定义彩色盒子
  • 【NLP 实战】蒙古语情感分析:从 CNN 架构设计到模型训练的全流程解析(内附项目源码及模型成果)
  • BP-Tools21.02下载 加解密利器 金融安全交易算法工具 PCI认证工具 金融和智能卡的数据加解密和数据转换工具
  • 无人机用shell远程登录机载电脑,每次需要环境配置原因