递推打表和log求单一
#include<iostream> const int maxn=1e3+10; const int mod=1e9+7; typedef long long ll; using namespace std; ll C[maxn][maxn]; void zuhe_nn() { for(int i=0;i<maxn;i++) for(int j=0;j<=i;j++) { if(j==0||j==i) C[i][j]=1; else C[i][j]=(C[i-1][j]+C[i-1][j-1])%mod; } } ll quick(ll a,ll b,ll m) { ll ans=1; while(b>0) { if(b&1) ans=ans*a%m; a=a*a%m; b>>=1; } return ans; } ll jiecheng[maxn]; void ini_zuhelogn() { jiecheng[0]=1; for(int i=1;i<maxn;i++) { jiecheng[i]=jiecheng[i-1]*i%mod; } } ll zuhe_logn(int m,int n) { if(jiecheng[0]!=1) ini_zuhelogn(); ll ans=((jiecheng[m]*quick(jiecheng[n], mod-2, mod))%mod)*quick(jiecheng[m-n], mod-2, mod)%mod; return ans; }