-
C++
取模(取余)核心公式
-
admin
SU
@
2026-4-26 17:37:55
取模(取余)核心公式
设:a,b,m 为整数,m>0,mod 为取模运算
一、基础恒等公式
- 定义式
$$a \bmod m = a - m \times \left\lfloor \frac{a}{m} \right\rfloor
$$
- 同余基础
若 a≡b(modm),则:
amodm=bmodm
二、四则运算取模(最常用)
1. 加法取模
$$(a+b) \bmod m = \big[(a\bmod m)+(b\bmod m)\big] \bmod m
$$
2. 减法取模
$$(a-b) \bmod m = \big[(a\bmod m)-(b\bmod m)+m\big] \bmod m
$$
加 m 防止出现负数
3. 乘法取模
$$(a\times b) \bmod m = \big[(a\bmod m)\times(b\bmod m)\big] \bmod m
$$
4. 幂运算取模(快速幂核心)
akmodm=(amodm)kmodm
三、拓展公式
- 结合多因子
$$(a_1+a_2+\dots+a_n)\bmod m=\left(\sum_{i=1}^n (a_i\bmod m)\right)\bmod m
$$$$(a_1a_2\cdots a_n)\bmod m=\left(\prod_{i=1}^n (a_i\bmod m)\right)\bmod m
$$
- 负数取模修正
(−a)modm=(m−amodm)modm
- 模的拆分
若 m=p×q 且 p,q 互质:
$$\begin{cases}
x\equiv a\pmod p\\
x\equiv b\pmod q
\end{cases} \Rightarrow 中国剩余定理求解$$
四、编程常用结论(C/C++、Python)
- 先取模再运算,防止爆 long long
- 减法一定要
+mod 再取模 避免负余数
示例:
ans = (a - b + mod) % mod;
ans = 1LL * a * b % mod;
需要我给你几道取模公式的例题+演算吗?方便直接套用刷题。