您的位置:首页 > 其它

codeforces Kyoya and Colored Balls

2015-08-07 13:42 302 查看
题解见:/article/2388780.html

注意这里的组合数取模~~~

/*Author :usedrose  */
/*Created Time :2015/8/7 13:31:44*/
/*File Name :2.cpp*/
#pragma comment(linker, "/STACK:1024000000,1024000000")
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <sstream>
#include <cstdlib>
#include <cstring>
#include <climits>
#include <vector>
#include <string>
#include <ctime>
#include <cmath>
#include <deque>
#include <queue>
#include <stack>
#include <set>
#include <map>
#define INF 0x3f3f3f3f
#define eps 1e-8
#define pi acos(-1.0)
#define MAXN 1110
#define MAXM 1000110
#define OK cout << "ok" << endl;
#define o(a) cout << #a << " = " << a << endl
#define o1(a,b) cout << #a << " = " << a << "  " << #b << " = " << b << endl
using namespace std;
typedef long long LL;

LL n;
LL a[MAXN];
LL fac[MAXM];
const LL mod = 1e9+7;

LL quick_pow(LL a, LL b)
{
LL c = 1;
while (b) {
if (b&1) c = c*a%mod;
b >>= 1;
a = a*a%mod;
}
return c%mod;
}

LL calc(LL m,LL i)
{
return ((fac[m]%mod)*(quick_pow((fac[i]*fac[m-i])%mod, mod-2)%mod))%mod;
}

int main()
{
//freopen("data.in","r",stdin);
//freopen("data.out","w",stdout);
cin.tie(0);
ios::sync_with_stdio(false);
fac[0] = 1;
for (int i = 1;i < MAXM; ++ i)
fac[i] = (fac[i-1]*i)%mod;
LL ans = 1, sum = 0;
cin >> n;
for (int i = 1;i <= n; ++ i) {
cin >> a[i];
sum += a[i];
}
for (int i = n;i >= 1;-- i) {
ans *= calc(sum-1, a[i]-1);
ans %= mod;
sum -= a[i];
}
cout << ans << endl;
return 0;
}


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