前言
大家都知道,四则运算中只有除法不支持模运算。
因此,如果在需要取模(特别是统计方案之类的题目),带除法的公式会十分难处理。
本文介绍一种在模意义将除法换成乘法的方法。
前置知识:欧拉定理
$a^{\varphi (b) } \equiv 1 (mod \space b)$
$\varphi$表示欧拉函数
欧拉函数以及证明请自行百度
使用方法
现假设你要计算$a \divide b \space(mod \space c)$
可将其变形为$a *{1 \over b} \space(mod \space c)
因为$b^{\varphi (c) } \equiv 1 (mod \space c)$
所以$b^{(\varphi (c)-1) } \equiv 1 \over b (mod \space c)$
代回$a *{1 \over b} \space(mod \space c)$
得$a*b^{(\varphi (c)-1) } (mod \space c)$
解决!
关于欧拉函数的计算,如果c为素数,则原式直接等于$a*b^{(c-1) } (mod \space c)$ (欧拉函数的定义)
否则可以$(O(n))$求出