Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
24629 liuyile 【S】T2 C++ 运行超时 80 1000 MS 280 KB 1433 2024-01-11 14:41:22

Tests(16/20):


#include<bits/stdc++.h> #define int long long using namespace std; int n,m; const int M=1e9+7; const int MAXN=1e6+10; int fac[2*MAXN],iv[2*MAXN]; inline int qp(int a,int x){ int res=1; while(x){ if(x&1)res=res*a%M; a=a*a%M; x>>=1; } return res; } inline int inv(int x){return qp(x,M-2);} inline int C(int n,int m){ if(n<m||m<0||n<0)return 0; if(n>2e6){ int fz=1,fm=iv[m]; for(int i=n;i>n-m;i--) fz=fz*i%M; return fz*fm%M; } return fac[n]*iv[m]%M*iv[n-m]%M; } inline int A(int n,int m){ if(n<m||m<0||n<0)return 0; return fac[n]*iv[n-m]%M; } inline int BOX(int n,int m){ return C(n+m-1,m-1); } inline int CAT(int n){ return (C(2*n,n)-C(2*n,n-1)+M)%M; } int f[110][110]; int t[110][110]; inline void add(int &x,int y){ x+=y; if(x>=M)x-=M; } signed main(){ //freopen("life.in","r",stdin); //freopen("life.out","w",stdout); ios::sync_with_stdio(0); //fac[0]=iv[0]=1; // for(int i=1;i<=2e6;i++) // fac[i]=fac[i-1]*i%M,iv[i]=inv(fac[i]); cin>>n>>m; int res=0; int ndc=1,n1dc=1,mdc=m; int faci1=1; for(int i=1;i<=n;i++){ add(res,ndc*inv(faci1)%M*n1dc%M*inv(faci1)%M*mdc%M*inv(i)%M); faci1=faci1*i%M; ndc=ndc*(n-i+1)%M; n1dc=n1dc*(n-i+1-1)%M; mdc=mdc*(m-i)%M; } cout<<res<<endl; return 0; }


测评信息: