トピックリンク:Luogu P1358
\(N \)選挙の内側のカード\(a_iを\)張
つまり、それは行われていました
ans += C(n, a[i]), n -= a[i];
この操作
モジュロに並んで
\(コード:\)
#include <bits/stdc++.h>
const int Mod = 10007;
const int MaxM = 100000 + 10;
using namespace std;
inline int read() {
int cnt = 0, opt = 1;
char ch = getchar();
for (; ! isalnum(ch); ch = getchar())
if (ch == '-') opt = 0;
for (; isalnum(ch); ch = getchar())
cnt = cnt * 10 + ch - 48;
return opt ? cnt : -cnt;
}//快读优化
int n, m, tot = 1;
int a[MaxM];
int C(int x, int y) {//计算C(n,a[i])
int sum = 1;
for (int i = y - x + 1; i <= y; ++ i) sum = sum * i % Mod;
for (int i = 1; i <= x; ++ i) {
while (sum % i != 0)
sum += Mod;
sum = sum / i % Mod;
}
return sum;
}
int main() {
n = read(), m = read();
for(int i = 1; i <= m; ++ i) {
a[i] = read();
tot = tot * C(a[i], n) % Mod;
n -= a[i];//反复进行此操作
}
cout << tot % Mod;
return 0;
}