2011 计算系数

计算系数

题目描述

给定一个多项式(by+ax)^k,请求出多项式展开后x^n*y^m 项的系数。

输入格式:

输入文件名为factor.in。

共一行,包含5 个整数,分别为 a ,b ,k ,n ,m,每两个整数之间用一个空格隔开。

输出格式:

输出共1 行,包含一个整数,表示所求的系数,这个系数可能很大,输出对10007 取模后的结果。

输入样例:
1 1 3 1 2
输出样例:
3

说明

【数据范围】

对于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。

//计算系数
#include<cstdio>
#include<iostream>
using namespace std;
int a,b,k,n,m,xx;
int sz[1001][1002]={0};
int su(int x,int y){
    int c=1;
    while(y>0){
        if((y/2)*2!=y) c=(c*x)%10007;
        x=(x*x)%10007;
        y/=2;
    }
    return c;
}
int main(){
    scanf("%d%d%d%d%d",&a,&b,&k,&n,&m);
    a%=10007;b%=10007;
    sz[0][1]=1;
    for(int i=1;i<=k;i++)
    for(int j=1;j<=i+1;j++){
        sz[i][j]=(sz[i-1][j-1]+sz[i-1][j])%10007;//根据二项式定理,求二项式系数; 
    }
    xx=su(a,n);//a^n;
    int q=su(b,m);//b^m;
    xx=(xx*q)%10007;
    xx=(sz[k][n+1]*xx)%10007;
    printf("%d
",xx);
    return 0;
}
View Code
原文地址:https://www.cnblogs.com/qingang/p/5452468.html