【NOIP 2011】计算系数(组合数+快速幂)

it2022-05-05  110

传送门

很容易就可以看出,答案等于

\(C_{k}^{n-1}*a^n*b^m\)

(如果不懂的,可以自行研究一下\({(ax+by)}^3\),\({(ax+by)}^4\)的系数规律)

然后...快速幂跑一下,杨辉三角一打就行了

#include<bits/stdc++.h> #define K 1005 #define mod 10007 using namespace std; int a,b,k,n,m; int c[K+5][K+5]; void yh_print() { for(int i=0;i<=K;i++) { c[i][0]=1,c[i][i]=1; } for(int i=2;i<=K;i++) { for(int j=1;j<=i;j++) { c[i][j]=(c[i-1][j-1]+c[i-1][j])%mod; } } } inline int ksm(int x,int y) { int base=x,ans=1; while(y) { if(y&1) ans=(ans*base)%mod; base=(base*base)%mod; y>>=1; } return ans%mod; } int main() { cin>>a>>b>>k>>n>>m; yh_print(); a%=mod,b%=mod; int p=ksm(a,n); int q=ksm(b,m); int s=(p*q)%mod; cout<<(s*c[k][m])%mod; return 0; }

转载于:https://www.cnblogs.com/Patrickpwq/articles/9581997.html


最新回复(0)