随机数
无穷的公式
a/b%mod=a*(b^(mod-2))%mod 表示a乘b的(mod-2)次方 mod是素数
即s[n]/(s[n-m]*s[m])%mod==s[n]*pow(s[n-m],mod-2)*pow(s[m],mod-2)%mod 因为幂比较大 所以要用大指数幂的公式
#include <cstdio> #include <cstring> #include <iostream> #include <cmath> #include<vector> #include<algorithm> using namespace std; typedef long long LL; const int maxn=1000007; const int INF=0x3f3f3f3f; const int mod=1000003; LL s[maxn]; LL fun(LL x, LL n) { LL res=1; while(n>0) { if(n & 1) res=(res*x)%mod; x=(x*x)%mod; n>>=1; } return res; } void work() { s[0]=1; for(int i=1;i<maxn;i++) s[i]=s[i-1]*i%mod; } int solve(int n,int m) { LL ans=1; ans=s[n]*fun(s[n-m],mod-2)%mod*fun(s[m],mod-2)%mod; return (int)ans; } int main() { int T,n,m,cas=1; work(); scanf("%d",&T); while(T--) { scanf("%d%d", &n, &m); printf("Case %d: %d\n", cas++, solve(n,m)); } return 0; }