版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/A1847225889/article/details/82778330
这是一个黑科技。
可以将某些题目硬生生地压到O(N)
不过这求的是1~n的逆元,多了不行……
结论
接下来放式子:
inv[i]=(M-M/i)*inv[M%i]%M;
用数学方法来表示:
i−1=(M−⌊iM⌋)(Mmodi)−1modM
证明
设
k=⌊iM⌋,
r=Mmodi
∴ik+r≡0(modM)∴−ik≡r(modM)
两边同时除以
ir得
−k∗r−1≡ii−1(modM)∴ii−1=−k∗r−1modM
即
i−1=(M−⌊iM⌋)(Mmodi)−1modM