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;
}

 

posted @ 2019-03-23 14:24  暗い之殇  阅读(133)  评论(0编辑  收藏  举报