#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;
}

这是一个C++程序,用于计算给定多项式的系数。它使用排列与组合的原理,通过组合函数C(n,k)预先计算所有可能的组合,并在主函数中根据输入的n和k值以及系数q进行乘法运算,输出最终的系数结果。"
124156658,10559913,Python实现银行家算法详解,"['Python编程', '操作系统', '算法实现']
516

被折叠的 条评论
为什么被折叠?



