uva 10105 Polynomial coefficients
数学题
题意:
多项式(x1+x2+...+xk)n.
输入n和k(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相关推荐
- UVa:10105 Polynomial Coefficients(多项式定理)
多项式定理的应用,纯水题. #include <iostream> #include <cstdlib> #include <cstdio> #include &l ...
- uva 10586 - Polynomial Remains(数论)
题目链接:uva 10586 - Polynomial Remains 题目大意:给出一个n和k,表示有一个一元n次方程,有0次幂开始给出系数,用这个式子去除以x^k+1,求剩下的一元n-k次方程. ...
- UVa Online Judge 工具網站
UVa Online Judge 工具網站 转自http://www.csie.ntnu.edu.tw/~u91029/uva.html Lucky貓的ACM園地,Lucky貓的 ACM 中譯題目 M ...
- (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO
下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...
- 算法竞赛入门经典+挑战编程+USACO
下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...
- 提取了下刘汝佳推荐的题号...
今天闲来没事上uva oj提取了下刘汝佳推荐的acm题号,原始数据如下: Volume 0. Getting Started 10055 - Hashmat the Brave Warrior ...
- ACMer Training 学习指导
本文原地址 一.UVaOJ http://uva.onlinejudge.org 西班牙Valladolid大学的程序在线评测系统,是历史最悠久.最著名的OJ. 二.<算法竞赛入门经典> ...
- Matlab使用笔记
1. 数据导入(importdata) 加载和显示图像文件 filename = 'ming.png'; A = importdata(filename); image(A); 导入文本文件 A = ...
- matlab length_《Matlab - Robotics System Toolbox》学习笔记(2)
写作说明: 1. 本文主要记录学习 Matlab - Robotics System Toolbox[1]的过程,就其中的一些重要知识点做相关记录.方便后期供自己与他人进行学习. 2. 由于 Matl ...
- 【 MATLAB 】unmkpp 函数介绍
unmkpp Extract piecewise polynomial details 提取分段多项式细节 Syntax [breaks,coefs,L,order,dim] = unmkpp(pp) ...
最新文章
- ajaxsetup无效_Ajax请求session失效该如何解决
- Android--常驻BroadReceiver实现短信提醒
- 再来 10 个新鲜的 HTML5 教程
- 深度学习综述(LeCun、Bengio和Hinton)
- Win10 使用minikube搭建k8s集群 并运行hello-minikube实例
- 【bzoj3280】小R的烦恼 费用流
- Mysql函数示例(如何定义输入变量与返回值)
- 处理大数必选BigInteger(记洛谷P1009题WA的经历,Java语言描述)
- 比较两个数组,输出不重复的数组
- 基类显式继承接口,类继承基类时又继承同一接口,引发接口方法混乱(显式继承接口的弊端)...
- [转载] 不少Gate或Node运算子 的反向传播代码
- iOS GBK转换为Utf8
- Atitit.软件开发的几大规则,法则,与原则p821.doc
- Android控件Gallery 3D效果
- springboot电子阅览室app毕业设计源码016514
- 计算机键盘灯不亮原因,计算机键盘灯不亮,鼠标灯亮的原因和解决方法
- 网络阅卷系统服务器配置,网上阅卷系统建设实施方案.doc
- vs201中添加splashScreen
- 远程如何重装linux系统,独立服务器远程重装Linux系统
- 高中学生计算机科技创新课题,论高中计算机教学中如何培养学生的创新能力