取模小技巧

问题

\(\frac a b \bmod m\) 的值。\(b\) 在模 \(m\) 下没有逆元,但是保证 \(a\)\(b\) 的倍数。

结论

\[\boxed{\frac a b \bmod m = \frac {a \bmod (b \times m)} b} \]

即,先把模数变成 \(b\) 倍,最后要答案的时候直接除以 \(b\) 即可。

证明

\(\frac a b = k \times m + r\),其中 \(0 \le r < m\)

\[\begin{aligned} \frac a b &= k \times m + r \\ a &= k \times (b \times m) + b \times r \\ a \bmod (b \times m) &= b \times r \\ r &= \frac {a \bmod (b \times m)} b \\ \end{aligned}\]

得证。

例题

P3015 [USACO11FEB] Best Parenthesis S

建出表达式树后,从根节点往下递归,得到一个答案,为最终答案的 \(2\) 倍。而模数是 \(12345678910\),不存在逆元。

因此,将模数设为 \(12345678910 \times 2\) 计算,将得到的答案答案直接除以 \(2\) 即可。

posted @ 2024-12-03 20:45  August_Light  阅读(32)  评论(0)    收藏  举报