设在一排上有N个格子,在格子中放置有不同色的灯,每种灯的个数记为N1,N2,Nk(k表示不同颜色灯的个数)

问题描述:

设在一排上有N个格子,在格子中放置有不同色的灯,每种灯的个数记为N1,N2,Nk(k表示不同颜色灯的个数)
Input
输入的第一行为一个正整数K,表示测试案例个数.
对每一个测试案例
第一行为正整数N,表示格子数 ;
以后的每行为一种颜色灯的数量;
每个案例最后为0
Output
求出每一种案例的排列总数.
对于每个案例输出Case :
Sample Input
4
8
2
3
0
6
1
0
2
0
3
1
2
0
Sample Output
Case 1:12
Case 2:6
Case 3:1
Case 4:0
#include
int main()
{
int k,i;
scanf("%d",&k);
for(i=0;i=N-2*a+2;t--)
{
\x05\x05\x05\x05s*=t;
\x05\x05\x05}
printf("Case %d:%d\n",i+1,s);
}
}
\x05return 0;
}
测试数据输入后运行也正确,但是不能ac,求修改
Description
设在一排上有N个格子(N≤12),若在格子中放置有不同颜色的灯,每种灯的个数记为N1,N2,……Nk(k表示不同颜色灯的个数).
放灯时要遵守下列规则:
①同一种颜色的灯不能分开;
②不同颜色的灯之间至少要有一个空位置(用_表示).
例如:N=8(格子数)
R=2(红灯数)
B=3(蓝灯数)
放置的方法有:
R-B顺序
RR_BBB__
RR__BBB_
RR___BBB
_RR_BBB_
_RR__BBB
__RR_BBB
B-R顺序
BBB_RR__
BBB__RR_
BBB___RR
_BBB_RR_
_BBB__RR
__BBB_RR
放置的总数为12种.
Input
输入的第一行为一个正整数K,表示测试案例个数.
对每一个测试案例
第一行为正整数N,表示格子数 ;
以后的每行为一种颜色灯的数量;
每个案例最后为0
Output
求出每一种案例的排列总数.
对于每个案例输出Case :

等于0的情况是:
a>N || a==n && a>2