JZOJ 3027. 计算系数 (Standard IO) NOIP2011

题目

Description

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

Input

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



Output

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

Sample Input

1 1 3 1 2

Sample Output

3
 

Data Constraint

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

分析

       这道题需要我们慢慢地推导

     首先以我们做过的数学题为基础,很明显推出来的是个杨辉三角

     1

     11

     121

     1331

     ……

     那到底是哪一个系数呢我们可以慢慢推导发现

     输出的其实是杨辉三角里面的F【k+1】【k-n+1】*a^n*b^m

代码

 1 #include<iostream>
 2 #define M 10007
 3 using namespace std;
 4 long long a,b,k,n,m;
 5 long long f[2001][2001];
 6 long long poww(int a,int b){   //快速幂,用for语句代替也可以
 7     long long ans=1,base=a;
 8     while(b)
 9     {
10         if(b&1!=0) ans*=base;
11         ans%=M;
12         base*=base;
13         base%=M;
14         b>>=1;
15     }
16     return ans%M;
17 }
18 int main ()
19 {
20     cin>>a>>b>>k>>n>>m;
21     f[1][1]=1;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
22     for (int i=2;i<=k+2;i++)  //杨辉三角
23         for (int j=1;j<=i;j++)
24             f[i][j]=(f[i-1][j-1]+f[i-1][j])%M;
25     cout<<((f[k+1][k-n+1]*poww(a,n)%M*poww(b,m))%M);
26 }
为何要逼自己长大,去闯不该闯的荒唐
原文地址:https://www.cnblogs.com/zjzjzj/p/10288380.html