礼物(中国剩余定理+拓展gcd求逆元+分治=拓展Lucus)
生活随笔
收集整理的這篇文章主要介紹了
礼物(中国剩余定理+拓展gcd求逆元+分治=拓展Lucus)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
禮物
- 題意:
- 求\[C(n,m)\ \%\ p\]
- \(n,m,p\le 10^9\),且若\(p=\prod_{i=1}^{k}{p_i}^{c_i}\),則\(\forall i\in [1..k]{p_i}^{c_i}\le 10^5.\)
注意到若\[p=\prod_{i=1}^{k}{p_i}^{c_i},則\forall i\in [1..k]{p_i}^{c_i}\le 10^5.\]
于是有一個經典套路就是,求出\(k\)組\(A_i=C(n,m)\% {p_i}^{c_i}\),最后用中國剩余定理求解.
注意到若中國剩余定理求出一組特解為\(Ans\),則\((Ans+kp)\)為其通解.
由于\(p\)不保證為質數,所以我們需要對\(C(n,m)\)拆式子,然后把含\(p\)的與不含\(p\)的質因子分開算.
于是問題轉化為求\(n!\),我們以\(p^c\)個數為一組,不難發現,把含\(p\)質因子的數篩出去后每一組的乘積在模\(p^c\)意義下是一樣的.
這個證明很顯然,因為每一組都可以表示為\((k*p^c+1,k*p^c+2,\cdots,(k+1)*p^c)\).
于是發現含有\(p\)的質因子又是一個階乘.
所以分治處理.
注意這里對于模數非質數的求逆元方法:
我們要求\(x\)關于\(m\)的逆元,實質上就是\(ax + km = 1\)的解.
然后我們可以求得這個\(a\),用拓展\(gcd\)即可.
- 此題是很好的思維+數論模板題.
轉載于:https://www.cnblogs.com/Pro-king/p/9383516.html
總結
以上是生活随笔為你收集整理的礼物(中国剩余定理+拓展gcd求逆元+分治=拓展Lucus)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: input 蓝边
- 下一篇: js-数组方法的使用和详谈