#include <cstdio> #include <cstdlib> #include <algorithm> using namespace std; typedef long long int int64; int64 mut[1000001];; const int64 P = 1000000007; int64 npow(int64 a, int n){ if(!n) return 1; int64 g = npow(a, n>>1); g = (g*g)%P; if(n&1) return (g*a)%P; return g; } int64 rev(int64 n){ return npow(n, P-2);} int64 C(int64 a, int64 b){ int64 ret = mut[a]; ret *= rev(mut[b]); ret %= P; ret *= rev(mut[a-b]); ret %= P; return ret; } int main(){ mut[0] = 1; for(int lx = 1;lx <= 1000000;lx++) mut[lx] = (mut[lx-1]*lx)%P; int n; scanf("%d", &n); int64 ans = 1; int sum = 0; for(int lx = 0;lx < n;lx++){ int k; scanf("%d", &k); ans *= C(sum+k-1, sum); ans %= P; sum += k; } printf("%d\n", (int)ans); return 0; }
2015年8月7日 星期五
Codeforces Round #309 (Div. 1), problem: (A) Kyoya and Colored Balls
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言