首页 > 其他 > 详细

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

时间:2019-01-18 16:51:00      阅读:139      评论:0      收藏:0      [点我收藏+]

题目

 

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 }

 

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

原文:https://www.cnblogs.com/zjzjzj/p/10288380.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!