洛谷的 C++20 为啥在codeforces上显示的是 C++17 (GCC 7-32)
另外
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mod=998244353;
int inv[1010],jc[1010],f[550][550],g[550][550],n,p;
int quick(int x,int y)
{
int sum=x,ans=1;
while(y)
{
if(y&1) ans=(ans*sum)%mod;
sum=(sum*sum)%mod,y>>=1;
}
return ans;
}
int C(int x,int y) {return jc[y]*inv[x]%mod*inv[y-x]%mod;}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
jc[0]=inv[0]=1;
for(int i=1;i<=1007;i++) jc[i]=jc[i-1]*i%mod,inv[i]=quick(jc[i],mod-2);
cin>>n>>p,p=(p*quick(10000,mod-2))%mod;
for(int i=0;i<=n;i++) f[0][i]=g[0][i]=1;
for(int i=1;i<=n;i++)
{
for(int j=0;j<=n;j++)
{
for(int k=0;k<i;k++) f[i][j]+=C(k,i-1)*((p*f[k][j+1]%mod+(mod+1-p)*(j>0?f[k][j-1]:0ll)%mod))%mod*g[i-1-k][j]%mod,f[i][j]%=mod;
for(int k=0;k<=i;k++) g[i][j]=(g[i][j]+C(k,i)*f[k][j]%mod*f[i-k][j]%mod)%mod;
}
}
long long ans=f[n][0]%mod;
for(int i=1;i<=2*n;i+=2) ans=(ans*quick(i,mod-2))%mod;
cout<<ans;
return 0;
}
这篇代码为啥运行
500 7777
时在 codeforces 上 C++17 (GCC 7-32) 会超时,而 C++20 (GCC 13-64) 却不会,本地的 C++14 也没超时