题目描述
查看题目信息
众所周知,衔接班的各个教室里面的桌子和椅子有着很多不同的样子,有些上面还被写了诸如 "boss","lmyakioi" 之类的所有人肯定完全不知道是什么意思的东西。
一天,lim 突发奇想,拿出了几套桌椅,想把它们摆成一排,其中有某些桌椅看起来完全一样,我们认为它们是相同的,不可分辨的。
具体地,一共有 种不同的桌椅,相同种类的桌椅是相同的,不同种类的桌椅是不同的。每种桌椅有 套。
现在,他想知道,把 套桌椅排成一排,一共有多少种排法。
输入格式
第一行一个整数 。
第二行 个整数 ,分别代表第 种桌椅有 套。
输出格式
一行,一个整数 ,代表方案数。
样例输入
2 1 2
样例输出
3
样例输入
3 1 1 1
样例输出
6
问题提示
说明/提示
样例 :如果我们把第一种桌椅记为 ,第二种记为 ,共有三种方法:
,故答案为 。
样例 :桌椅两两不同,故问题变成全排列,答案即为 。
数据范围
对于前 的数据:
对于前 的数据:
对于前 的数据:
#include <iostream>
using namespace std;
int n;
int a[15];
int main(){
long long ans=1,s=0;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
s+=a[i];
}
for(int i=1;i<=s;i++){
ans*=i;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=a[i];j++){
ans/=j;
}
}
cout<<ans;
return 0;
}