线性的求逆元
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线性的求逆元相关的知识,希望对你有一定的参考价值。
如果对于一个1000000级别的素数,这样做的时间复杂度是很高了。实际上有的算法,有一个递推式如下 它的推导过程如下,设,那么 对上式两边同时除,进一步得到 再把和替换掉,最终得到 初始化,这样就可以通过递推法求出模素数的所有逆元了。 另外模的所有逆元值对应中所有的数,比如,那么对应的逆元是。 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=1e6+10; ll a[maxn*3]; int main(){ ios::sync_with_stdio(false); int n,p; a[1]=1; cin>>n>>p; cout<<1<<‘\n‘; for(int i=2;i<=n;i++){ a[i]=(p-(p/i)%p)*a[p%i]%p; cout<<a[i]<<‘\n‘; } } 十一中内网
以上是关于线性的求逆元的主要内容,如果未能解决你的问题,请参考以下文章