计算
Πi=1n(di−1)(n−2)!可以通过除了 hack 之外的所有数据
代码(省略快读):
const int N = 150 + 7;
int n, p[N], pcnt, cnt[N], nxt[N], sum;
bool notp[N];
long long ans = 1;
int main() {
for (int i = 2; i < N; i++) {
if (!notp[i])
p[++pcnt] = i, nxt[i] = pcnt;
for (int j = 1; j <= pcnt && i * p[j] < N; j++) {
notp[i * p[j]] = 1, nxt[i * p[j]] = j;
if (i % p[j] == 0)
break;
}
}
read(n);
if (n == 1)
return read(n), put(n ? 0 : 1), 0;
for (int i = 1; i <= n - 2; ++i)
for (int j = i; j != 1; j /= p[nxt[j]])
++cnt[nxt[j]];
for (int i = 1, d; i <= n; ++i) {
read(d), --d, sum += d;
if (d < 0)
return put(0), 0;
for (int j = d; j > 1; j /= p[nxt[j]])
--cnt[nxt[j]];
}
if (sum != n - 2)
return put(0), 0;
for (int i = 1; i <= pcnt; ++i)
for (int j = 1; j <= cnt[i]; ++j)
ans *= p[i];
put(ans);
return 0;
}