O(N)求出1~n逆元

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/A1847225889/article/details/82778330

这是一个黑科技。
可以将某些题目硬生生地压到O(N)
不过这求的是1~n的逆元,多了不行……


结论

接下来放式子:

inv[i]=(M-M/i)*inv[M%i]%M;

用数学方法来表示:
i 1 = ( M M i ) ( M m o d    i ) 1 m o d    M i^{-1}=\left(M-\lfloor\frac{M}{i}\rfloor\right)\left(M\mod i\right)^{-1}\mod M


证明

k = M i k=\lfloor\frac{M}{i}\rfloor r = M m o d    i r=M \mod i
i k + r 0 ( m o d    M ) i k r ( m o d    M ) \therefore ik+r \equiv 0 \left(\mod M\right) \\ \therefore -ik \equiv r \left(\mod M\right)
两边同时除以 i r ir
k r 1 i i 1 ( m o d    M ) i i 1 = k r 1 m o d    M -k*r^{-1} \equiv i^{i-1} \left(\mod M\right) \\ \therefore i^{i-1}=-k*r^{-1} \mod M

i 1 = ( M M i ) ( M m o d    i ) 1 m o d    M i^{-1}=\left(M-\lfloor\frac{M}{i}\rfloor\right)\left(M\mod i\right)^{-1}\mod M

猜你喜欢

转载自blog.csdn.net/A1847225889/article/details/82778330