BZOJ 2186 [Sdoi2008]沙拉公主的困惑 - 筛法+线性求逆元
2017-10-23 21:53
477 查看
首先有一个很好玩的线性递推求逆元的方法:
http://blog.csdn.net/whyorwhnt/article/details/19169035
对于这道题,若设gcd(a,b)=1,则必然有gcd(a+kb,b)=1,因在mod b系中,加b对于余数无影响。
下面需要对此题证明一个结论,即:在1~n!中有phi(m!)n!m!个数与m!互质。
首先phi即在m!范围内与m!互质的数,然后把它扩展到n!范围内,即为答案。
Ans=phi(m!)n!m!=(∏p|np−1p)n!
由于所有运算都是O(n)的,于是预处理O(n),查询O(1)
http://blog.csdn.net/whyorwhnt/article/details/19169035
对于这道题,若设gcd(a,b)=1,则必然有gcd(a+kb,b)=1,因在mod b系中,加b对于余数无影响。
下面需要对此题证明一个结论,即:在1~n!中有phi(m!)n!m!个数与m!互质。
首先phi即在m!范围内与m!互质的数,然后把它扩展到n!范围内,即为答案。
Ans=phi(m!)n!m!=(∏p|np−1p)n!
由于所有运算都是O(n)的,于是预处理O(n),查询O(1)
#include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<algorithm> using namespace std; const int maxn=10000005; int T,mod,n,m,cnt; int prime[maxn],rev[maxn],fac[maxn],deno[maxn]; bool not_prime[maxn]; void linear_shaker() { for(int i=2;i<maxn;i++) { if(!not_prime[i]) prime[++cnt]=i; int t; for(int j=1;j<=cnt&&(t=prime[j]*i)<maxn;j++) { not_prime[t]=true; if(i%prime[j]==0)break; } } rev[1]=1; for(int i=2;i<maxn;i++) rev[i]=1LL*(mod-mod/i)*rev[mod%i]%mod; fac[1]=1; for(int i=2;i<maxn;i++) fac[i]=1LL*fac[i-1]*i%mod; deno[1]=1; for(int i=2;i<maxn;i++) if(!not_prime[i])deno[i]=1LL*deno[i-1]*(i-1)%mod*rev[i]%mod; else deno[i]=deno[i-1]; } int main() { scanf("%d%d",&T,&mod); linear_shaker(); while(T--) { scanf("%d%d",&n,&m); printf("%d\n",1LL*fac *deno[m]%mod); } }
相关文章推荐
- BZOJ 2186 [Sdoi2008]沙拉公主的困惑 线性逆元
- 【bzoj2186】[Sdoi2008]沙拉公主的困惑 数论 线性筛逆元
- 【BZOJ 2186】 2186: [Sdoi2008]沙拉公主的困惑 (欧拉筛,线性求逆元)
- 【BZOJ2186】[Sdoi2008]沙拉公主的困惑 线性筛素数
- BZOJ 2186 [Sdoi2008]沙拉公主的困惑(逆元)
- BZOJ2186 [Sdoi2008]沙拉公主的困惑 【数论,欧拉函数,线性筛,乘法逆元】
- bzoj2186【Sdoi2008】沙拉公主的困惑 数论:欧拉筛法,线性逆元
- BZOJ2186 [Sdoi2008]沙拉公主的困惑 【数论,欧拉函数,线性筛,乘法逆元】
- BZOJ 2186 [Sdoi2008] 沙拉公主的困惑 逆元/欧拉定理
- Bzoj 2186: [Sdoi2008]沙拉公主的困惑 乘法逆元,线性筛,欧拉函数,数论
- BZOJ 2186: [Sdoi2008]沙拉公主的困惑 (逆元的应用)
- bzoj 2186: [Sdoi2008] 沙拉公主的困惑 (数论,逆元)
- bzoj 2186: [Sdoi2008]沙拉公主的困惑 (线性筛+数论)
- bzoj2186: [Sdoi2008]沙拉公主的困惑 逆元
- bzoj 2186 [Sdoi2008]沙拉公主的困惑(欧拉函数,逆元)
- 数学(逆元):BZOJ 2186: [Sdoi2008]沙拉公主的困惑
- BZOJ 2186: [Sdoi2008]沙拉公主的困惑 [欧拉函数][逆元]
- bzoj 2186 [Sdoi2008]沙拉公主的困惑 欧拉函数
- bzoj 2186: [Sdoi2008]沙拉公主的困惑 数论
- bzoj 2186: [Sdoi2008]沙拉公主的困惑