题目描述:
给定一个多项式(by+ax)^k,请求出多项式展开后x^n*y^m 项的系数。
输入格式:
共一行,包含5 个整数,分别为 a ,b ,k ,n ,m,每两个整数之间用一个空格隔开。
输出格式:
输出共1 行,包含一个整数,表示所求的系数,这个系数可能很大,输出对10007 取模后的结果。
洛谷的难度系数不靠谱啊。。。。
还以为是第二题,结果是第一题,但题目都看了,虽然水还是做了,
题解:
求一个杨辉三角,在搞个快速幂就好了。
可以把ax当成x,把by当成y,
答案就是a^n*b^m*c[k][m+1]
c[k][m+1]表示第几列第几项的系数,随便yy一下就好了。
代码:
//by lzx #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> using namespace std; #define ll long long const ll mod=10007; const int N=1010; ll a,b,k,n,m; ll c[N][N]; void get_(ll x) { c[1][1]=1ll;c[1][2]=1ll; for(ll i=2;i<=x;i++) { c[i][1]=1ll;c[i][i+1]=1ll; for(ll j=2;j<=i;j++) { c[i][j]=(c[i-1][j-1]+c[i-1][j])%mod; } } } ll pow_mod(ll a1,ll b1) { ll ans=1ll;a1%=mod; while(b1) { if(b1&1) ans=(ans*a1)%mod; a1=(a1*a1)%mod; b1>>=1; } return ans; } int main() { scanf("%lld%lld%lld%lld%lld",&a,&b,&k,&n,&m); get_(k); ll yu=pow_mod(a,n)*pow_mod(b,m)%mod; yu=yu*c[k][m+1]%mod; printf("%lld\n",yu); }