P1313 计算系数 HMR大佬讲解
今天,HMR大佬给我们讲解了这一道难题。
这道题明显的二项式定理,自然想到了要用到杨辉三角了。基本思路就是先用for循环求出杨辉三角,这样就求出了x的n次方的系数和y的m次方的系数。
这是大佬的AC代码:
#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cctype> #define ll long long #define gc getchar #define maxn 1005 #define mo 10007 using namespace std; inline ll read(){ //快读 ll a=0;int f=0;char p=gc(); while(!isdigit(p)){f|=p=='-';p=gc();} while(isdigit(p)){a=(a<<3)+(a<<1)+(p^48);p=gc();} return f?-a:a; }int n,m,k,a,b,f[maxn][maxn]; int pow(int a,int k){ int ans=1; while(k){ if(k&1)ans=ans*a%mo; //快速幂求a的n次方和b的m次方 a=a*a%mo;k>>=1; }return ans; } int main(){f[0][0]=1; a=read()%mo;b=read()%mo;k=read();n=read();m=read(); for(int i=1;i<=k;++i){f[i][0]=1; //求杨辉三角 for(int j=1;j<=i;++j) f[i][j]=(f[i-1][j-1]+f[i-1][j])%mo; } printf("%d\n",f[k][n]*pow(a,n)%mo*pow(b,m)%mo); return 0; }