题目:[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;

    }

posted on 2012-01-06 15:46  怡红公子  阅读(361)  评论(0编辑  收藏  举报