[模板]Lucas定理及组合数
#include<cstdio> #include<cstring> #include<string> #define WR WinterRain using namespace std; const long long WR=1001000,mod=10007; long long read(){ long long s=0,w=1; char ch=getchar(); while(ch>'9'||ch<'0'){ if(ch=='-') w=-1; ch=getchar(); } while(ch>='0'&&ch<='9'){ s=(s<<3)+(s<<1)+ch-48; ch=getchar(); } return s*w; } long long quick_pow(long long a,long long b){ long long res=1,base=a; while(b>0){ if(b&1) res=res*base%mod; base=base*base%mod; b>>=1; } return res; } long long comb(long long n,long long m){ long long a=1,b=1; for(long long i=n-m+1;i<=n;i++) a=a*i%mod; for(long long i=1;i<=m;i++) b=b*i%mod; return a*quick_pow(b,mod-2)%mod; } long long Lucas(long long n,long long m){ if(m==0) return 1; return comb(n%mod,m%mod)*Lucas(n/mod,m/mod)%mod; } int main(){ long long t; t=read(); long long n,m; while(t--){ n=read(),m=read(); printf("%lld\n",Lucas(n,m)); } return 0; }
本文来自博客园,作者:冬天丶的雨,转载请注明原文链接:https://www.cnblogs.com/WintersRain/p/16190525.html
为了一切不改变的理想,为了改变不理想的一切