开会
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
0
-
描述
-
在南阳理工学院,经常会在小礼堂举办活动、开大型会议,多数情况下都是从每个班里抽出一部分人去代表班级,但是也不排除会让全班一起去的时候。每次只确定了去的人数,没有规定要某某同学去。为了公平起见,一个同学不会去两次,那么每次都有多少种去的方案呢。
假设这个班级总共S个人,这一学期一共要在小礼堂开n次会议,每次去小礼堂的人数为Mi,那么对于每次会议有多少种去的方案呢?(保证n次去的总人数不超过班级总人数)
-
输入
-
多组测试数据。
每组数据第一行两个整数S,n;(0<S<18,0<n<10)
第二行n个数(M1,M2......Mn)(0<Mi<10);
输出
- 每组数据输出一行,n个数,代表每次去小礼堂的方案种数。 样例输入
-
10 21 112 32 1 1
样例输出
-
10 966 10 9
-
多组测试数据。
思路:略
#include <stdio.h>
long long Cn(int m, int n)
{
int i = n;
long long sum = 1;
while (i!= 0)
{
sum *= m;
m--;
i--;
}
while (n!=0)
{
sum /= n;
n--;
}
return sum;
}
int main()
{
int m, n;
while (scanf("%d %d",&m,&n) != EOF)
{
int a[11] = {0},i;
for (i=0; i<n; i++)
{
scanf("%d",&a[i]);
}
for (i=0; i<n; i++)
{
printf("%lld ",Cn(m,a[i]));
m -= a[i];
}
printf("\n");
}
return 0;
}