关于C++20 (GCC 13-64) (玄关)
  • 板块学术版
  • 楼主tornado01
  • 当前回复5
  • 已保存回复5
  • 发布时间2024/3/30 17:23
  • 上次更新2024/3/30 19:41:59
查看原帖
关于C++20 (GCC 13-64) (玄关)
716013
tornado01楼主2024/3/30 17:23

洛谷的 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 也没超时

2024/3/30 17:23
加载中...