题目:[NOIP 2011]计算系数
题目描述
给定一个多项式(ax + by)k,请求出多项式展开后xn ym项的系数。
【数据范围】
对于 30%的数据,有0≤k≤10;
对于 50%的数据,有a = 1,b = 1;
对于 100%的数据,有0≤k≤1,000,0≤n, m≤k,且n + m = k,0≤a,b≤1,000,000。
输入格式
共一行,包含 5 个整数,分别为a,b,k,n,m,每两个整数之间用一个空格隔开。
输出格式
输出共 1 行,包含一个整数,表示所求的系数,这个系数可能很大,输出对10007 取
模后的结果。
代码实现:
今后在算出答案很不可思议时要注意是否是数据范围的问题。
#include<iostream>
using namespace std;
int p[1001][1001];
int main()
{
int a,b,k,n,m; int i,j;long long q=1;
cin>>a>>b>>k>>n>>m;
for(i=1;i<=k;i++)
{p[0][i]=1;p[i][i]=1;}
for(j=2;j<=k;j++)
for(i=1;i<j;i++)
p[i][j]=(p[i-1][j-1]+p[i][j-1])%10007;
q=q*p[n][k]%10007;
for(i=1;i<=n;i++)
{q=q*a;q=q%10007;}
for(i=1;i<=m;i++)
{q=q*b;q=q%10007;}
cout<<q<<endl;
system("pause");
return 0;
}