您的位置:首页 > 其它

uva 10105 多项式系数 (排列与组合)

2011-08-15 20:49 302 查看
#include <iostream>

#include <cstdio>

#include <cstring>

#include <cstdlib>

#include <algorithm>

#include <cctype>

#include <cmath>

#define LOCAL

#define M 20

using namespace std;

int c[M][M];

void Combination() // 将所有的C(n,k)都计算了,时间复杂度为O(N^2);

{

memset(c,0,sizeof(c));

for(int i = 0;i <= 16;i++)

{

c[i][0] = 1;

for(int k = 1;k <= i;k++)

c[i][k] = c[i-1][k-1] + c[i-1][k];

}

}

/*

//另一种较快的方法针对特定的一个N, C(n,k) = (n-k+1)/k * C(n,k-1)

C[0] = 1;

for(int i = 1;i <= n;i++) C[i] = C[i-1]*(n-i+1)/i;

*/

int main()

{

#ifdef LOCA

freopen("in.in","r",stdin);

#endif

int n,k;

int q[M];

Combination();

while(cin>>n>>k)

{

for(int i = 0;i < k;++i)

cin>>q[i];

int sum = 1,cnt = n;

for(int i = 0;i < k;++i)

{

sum *= c[cnt][q[i]];

cnt -= q[i];

}

cout<<sum<<endl;

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: