标签:logs name 线性 推导 include 递推法 mes cin def
如果对于一个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‘; } } 十一中内网
标签:logs name 线性 推导 include 递推法 mes cin def
原文地址:http://www.cnblogs.com/79707536wc/p/7656156.html