“這道題怎麼做啊…只會10%的狀壓啊”
“wxh用狀壓過了”
“…”
然後我苦苦思索仍然無解,去膜了題解之後才弄懂。
我們把這個數都,於是變成了求這個排列中有多少排列滿足所有前綴和
容易同加油站的題一樣證明,這樣滿足條件的循環同構的解是惟一的。
再考慮最底下一張牌,得出答案:
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const ll N=1e2+5;
const ll Inf=1e18;
const ll Mod=998244353;
ll n,m,ans=1,w[N];
inline ll mul(ll x,ll y) {
return x*y%Mod;
}
int main() {
scanf("%lld",&n);
for(ll i=1;i<=n;i++) scanf("%lld",&w[i]),m+=w[i];
for(ll i=1;i<=m;i++) if(i^(m+1-n)) ans=mul(ans,i);
printf("%lld\n",ans);
return 0;
}