社区讨论
求助,为什么过不了maxai<=1
P14360[CSP-J 2025] 多边形参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mhiy9nai
- 此快照首次捕获于
- 2025/11/03 17:40 4 个月前
- 此快照最后确认于
- 2025/11/03 17:40 4 个月前
求助大神,为什么过不了 。
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=5e3+5,MOD=998244353;
int n,ans,maxn;
int a[N],fac[N],inv[N];
int qpow(int a,int b)
{
int res=1;
while(b>0)
{
if(b&1)(res*=a)%=MOD;
(a*=a)%=MOD;
b>>=1;
}
return res;
}
void init()
{
fac[0]=1;
for(int i=1;i<=N-3;i++)
fac[i]=fac[i-1]*i%MOD;
inv[N-3]=qpow(fac[N-3],MOD-2);
for(int i=N-4;i>=0;i--)
inv[i]=inv[i+1]*(i+1)%MOD;
}
inline int C(int a,int b){return b==a?1:fac[a]*inv[b]%MOD*inv[a-b]%MOD;}
signed main()
{
cin>>n;
init();
for(int i=1;i<=n;i++)
cin>>a[i],maxn=max(maxn,a[i]);
if(maxn<=1)
{
for(int i=4;i<=n;i++)
for(int j=3;j<i;j++)
(ans+=C(i-1,j))%=MOD;
cout<<ans;
}
else if(n<=3)
{
if(n<3)cout<<0;
else if(a[1]+a[2]>a[3]&&a[2]+a[3]>a[1]&&a[3]+a[1]>a[2])cout<<1;
else cout<<0;
}
else cout<<114514;
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...