输入文件:factor.in
输出文件:factor.out
提交文件:factor.pas/cpp
时间限制:1S
空间限制:128M
题目描述:
给定一个多项式(ax + by)k,请求出多项式展开后xn ym项的系数。
输入格式:
共一行,包含 5 个整数,分别为a,b,k,n,m,每两个整数之间用一个空格隔开。
输出格式:
输出共 1 行,包含一个整数,表示所求的系数,这个系数可能很大,输出对10007 取
模后的结果。
样例输入:
1 1 3 1 2
样例输出:
3
#include<cstdio>
using namespace std;
const int MAXN = 10005;
int dp[MAXN][MAXN],a,b,k,n,m,ans;
int main()
{
freopen("factor.in","r",stdin);
freopen("factor.out","w",stdout);
scanf("%d%d%d%d%d",&a,&b,&k,&n,&m);
dp[1][1]=dp[1][2]=1; // 让指数是2的时候 x^2的系数为 1*a 1*b
for (int i=2;i<=k;i++)
for (int j=1;j<=i+1;j++)
dp[i][j] = (dp[i-1][j] + dp[i-1][j-1]) % 10007; //杨辉三角的规律
ans = dp[k][m+1]; // k是指数 第k行 第m个
for (int i=1;i<=n;i++)
ans= ((ans%10007) * (a%10007)) % 10007;
for (int i=1;i<=m;i++)
ans= ((ans%10007) * (b%10007)) % 10007; // a和b分别乘了n次 每次取模防止超出数据范围
printf("%d ",ans);
return 0;
}
//通过大量计算可发现规律 杨辉三角