数学题

题意:

多项式(x1+x2+...+xk)n.

输入nk(0<k,n<13),分别表示多项式次数和变元数。第二行为k个非负整数n1,n2,...nk,满足n1+n2+...nk=n.

输出多项式(x1+x2+...+xk)n展开后的(x1)^n1*(x2)^n2...(xn)^nk这一项的系数。

思路:

如果单单是(a+b)^n,那我们可以轻易地用二项式定理来解决系数的问题,但是现在变量有k个,要怎么办呢?

我们可以用一种递归的思想来看这道题,化繁为简,将一个没见过的问题转化为见过的

(x1+x2+x3……+xk-1+xk)^n=(Xk-1+xk)^n  ,   即我们把前面k-1项全部加起来用Xk-1替代

那么这个式子(Xk-1+xk)^n 就是我们熟悉的(a+b)^n

(x1)^n1*(x2)^n2...(xn)^nk这一项可以表示为 (Xk-1)^m * xk^nk ,   那么这一项的系数是C(n,nk)

那么m是多少呢?显然是m=n-nk

这个和(a+b)^n  , 展开后每一项都可以表示为  a^(n-nk)*b^nk   的道理是一样的

所以现在我们要解决 (X(k-1))^m

别忘了Xk-1^m=(x1+x2+x3……xk-1)^m = (Xk-2+xk-1)^m  ,  而我们是要其中特定的一项的系数,所以要开拆分, 转化为原式子对应的项就是   Xk-2^(m-nk-1) * xk-1^nk-1

这不就和刚才是一样的吗?

可想而知这项的系数是C(m,nk-1)=C(n-nk , nk-1)

所以可以递归解决,当然要写成迭代也是非常容易的

另外我们要多次用到组合数C(n,m),所以我们应该事先保存下来

用计算机来构建C一般利用杨辉三角

杨辉三角的第0层(这里我们从0开始标号)为1,从第1层开始,第i层的数字其实就是(a+b)^i的系数

我们用左对齐的形式来储蓄杨辉三角,对于每一层,我们需要构建的数字是第2个数字到第i个数字(因为第i层有i+1个数字,第1和第i+1个数字一定会1)

由杨辉三角性质和用左对齐的方式储存可知,a[i][j]=a[i-1][j]+a[i-1][j-1];

然后问题就解决了

#include <cstdio>
#include <cstring>
#define N 15
int c[N][N];
int main()
{c[0][0]=c[1][0]=c[1][1]=1;for(int i=2; i<=13; i++)  //行
    {c[i][0]=c[i][i]=1;for(int j=1; j<i; j++)c[i][j]=c[i-1][j]+c[i-1][j-1];}
/*for(int i=1; i<=13; i++){for(int j=0; j<=i; j++)printf("%d ",c[i][j]);printf("\n");}
*/int i,n,k,a[N];long long sum;while(scanf("%d%d",&n,&k)!=EOF){for(i=1; i<=k; i++) scanf("%d",&a[i]);sum=1; i=k;while(i>=1){sum*=c[n][a[i]];n-=a[i];i--;}printf("%lld\n",sum);}
}

转载于:https://www.cnblogs.com/scau20110726/archive/2012/12/22/2829012.html

uva 10105 Polynomial coefficients相关推荐

  1. UVa:10105 Polynomial Coefficients(多项式定理)

    多项式定理的应用,纯水题. #include <iostream> #include <cstdlib> #include <cstdio> #include &l ...

  2. uva 10586 - Polynomial Remains(数论)

    题目链接:uva 10586 - Polynomial Remains 题目大意:给出一个n和k,表示有一个一元n次方程,有0次幂开始给出系数,用这个式子去除以x^k+1,求剩下的一元n-k次方程. ...

  3. UVa Online Judge 工具網站

    UVa Online Judge 工具網站 转自http://www.csie.ntnu.edu.tw/~u91029/uva.html Lucky貓的ACM園地,Lucky貓的 ACM 中譯題目 M ...

  4. (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO

    下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...

  5. 算法竞赛入门经典+挑战编程+USACO

    下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...

  6. 提取了下刘汝佳推荐的题号...

    今天闲来没事上uva oj提取了下刘汝佳推荐的acm题号,原始数据如下: Volume 0. Getting Started    10055 - Hashmat the Brave Warrior ...

  7. ACMer Training 学习指导

    本文原地址 一.UVaOJ http://uva.onlinejudge.org 西班牙Valladolid大学的程序在线评测系统,是历史最悠久.最著名的OJ. 二.<算法竞赛入门经典> ...

  8. Matlab使用笔记

    1. 数据导入(importdata) 加载和显示图像文件 filename = 'ming.png'; A = importdata(filename); image(A); 导入文本文件 A = ...

  9. matlab length_《Matlab - Robotics System Toolbox》学习笔记(2)

    写作说明: 1. 本文主要记录学习 Matlab - Robotics System Toolbox[1]的过程,就其中的一些重要知识点做相关记录.方便后期供自己与他人进行学习. 2. 由于 Matl ...

  10. 【 MATLAB 】unmkpp 函数介绍

    unmkpp Extract piecewise polynomial details 提取分段多项式细节 Syntax [breaks,coefs,L,order,dim] = unmkpp(pp) ...

最新文章

  1. ajaxsetup无效_Ajax请求session失效该如何解决
  2. Android--常驻BroadReceiver实现短信提醒
  3. 再来 10 个新鲜的 HTML5 教程
  4. 深度学习综述(LeCun、Bengio和Hinton)
  5. Win10 使用minikube搭建k8s集群 并运行hello-minikube实例
  6. 【bzoj3280】小R的烦恼 费用流
  7. Mysql函数示例(如何定义输入变量与返回值)
  8. 处理大数必选BigInteger(记洛谷P1009题WA的经历,Java语言描述)
  9. 比较两个数组,输出不重复的数组
  10. 基类显式继承接口,类继承基类时又继承同一接口,引发接口方法混乱(显式继承接口的弊端)...
  11. [转载] 不少Gate或Node运算子 的反向传播代码
  12. iOS GBK转换为Utf8
  13. Atitit.软件开发的几大规则,法则,与原则p821.doc
  14. Android控件Gallery 3D效果
  15. springboot电子阅览室app毕业设计源码016514
  16. 计算机键盘灯不亮原因,计算机键盘灯不亮,鼠标灯亮的原因和解决方法
  17. 网络阅卷系统服务器配置,网上阅卷系统建设实施方案.doc
  18. vs201中添加splashScreen
  19. 远程如何重装linux系统,独立服务器远程重装Linux系统
  20. 高中学生计算机科技创新课题,论高中计算机教学中如何培养学生的创新能力

热门文章

  1. 【Winform-右下角弹窗】实现右下角弹窗,提示信息
  2. canvas lineWidth1px问题
  3. 美国这100年来一共发生了多少次金融危机
  4. Geek 极客大挑战2021 web
  5. 品致教您如何选择合适的电流探头
  6. UE4 C++ 通过Spline绘制任意道路
  7. 三级缓存 SD—内存—网络
  8. 贴片电阻各种封装规格及阻值标注方法
  9. 使用Fontcreator字体制作软件及字体设计学习
  10. Unity-拓展篇-数字字体制作