【BZOJ 2186】[Sdoi2008]沙拉公主的困惑 欧拉函数
来源:互联网 发布:spss调查问卷数据录入 编辑:程序博客网 时间:2024/04/30 16:31
若(x,y)=1则(x+n*y,y)=1,又因为n>=m所以答案就是:
(n!)/(m!)*phi(m!)=(n!)/(m!)*(m!)*∏(1-1/p)=(n!)*∏(1-1/p)
全部预处理完事。
线推逆元inv[i]=-(Mod/i)*inv[i%Mod]%Mod
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define LL long long#define maxn 10000021using namespace std;bool vis[maxn];int cnt,pri[maxn],inv[maxn],T,Mod,n,m,fac[maxn],p[maxn];void make(){inv[1]=1,fac[1]=fac[0]=1;for(int i=2;i<maxn;i++){fac[i]=(LL)fac[i-1]*i%Mod;inv[i]=-((LL)Mod/i)*(LL)inv[Mod%i]%Mod;if(inv[i]<0)inv[i]+=Mod;if(!vis[i])pri[++cnt]=i;for(int j=1;j<=cnt&&(LL)pri[j]*i<maxn;j++){vis[i*pri[j]]=true;if(i%pri[j]==0)break;}}p[0]=1;for(int i=1;i<=cnt;i++){p[i]=((LL)p[i-1]*(1-inv[pri[i]]+Mod)%Mod+Mod)%Mod;}}int main(){scanf("%d%d",&T,&Mod);make();int ans;while(T--){scanf("%d%d",&n,&m);ans=(LL)fac[n]*p[upper_bound(pri+1,pri+1+cnt,m)-pri-1]%Mod;printf("%d\n",ans);}return 0;}
0 0
- bzoj 2186 [Sdoi2008]沙拉公主的困惑 欧拉函数
- 【BZOJ 2186】[Sdoi2008]沙拉公主的困惑 欧拉函数
- [BZOJ 2186][Sdoi2008]沙拉公主的困惑:欧拉函数
- bzoj 2186 [Sdoi2008]沙拉公主的困惑 欧拉函数
- BZOJ 2186: [Sdoi2008]沙拉公主的困惑 [欧拉函数][逆元]
- 欧拉函数+逆元 [Sdoi2008]沙拉公主的困惑
- [BZOJ2186][SDOI2008]沙拉公主的困惑 欧拉函数
- bzoj 2186: [Sdoi2008]沙拉公主的困惑
- 【bzoj 2186】: [Sdoi2008]沙拉公主的困惑
- BZOJ 2186 [Sdoi2008]沙拉公主的困惑
- BZOJ 2186: [Sdoi2008]沙拉公主的困惑
- bzoj 2186 [Sdoi2008]沙拉公主的困惑
- BZOJ 2186 [Sdoi2008] 沙拉公主的困惑
- BZOJ 2186 [Sdoi2008]沙拉公主的困惑
- BZOJ 2186 [Sdoi2008] 沙拉公主的困惑 逆元/欧拉定理
- 2186: [Sdoi2008]沙拉公主的困惑 线性筛素数+欧拉函数+乘法逆元
- [SDOI2008]沙拉公主的困惑 线性筛 素数+欧拉
- BZOJ 2186 SDOI2008 沙拉公主的困惑 数论
- 构造方法类的反射机制
- MySQL日期和时间处理函数应用总结
- [BZOJ3144][Hnoi2013]切糕(最小割)
- android 开发零起步学习笔记(二十八):15 个 Android 通用流行框架大全
- 【JAVA】struts的property用法
- 【BZOJ 2186】[Sdoi2008]沙拉公主的困惑 欧拉函数
- [ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a
- Centos7 网络配置
- 更新会员积分
- 【机器学习】线性分类LogisticRegression
- 亲们,你们的tomcat并发能到多少?
- mybatis select标签中resultMap和resultType作用区别
- iOS仿QQ分组效果
- CSS你可能还不知道的一些知识点