| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 38599 | baka24 | 【S】T3 | C++ | 解答错误 | 80 | 317 MS | 604 KB | 1030 | 2025-10-18 13:22:49 |
#include<bits/stdc++.h> using namespace std; #define ll long long #define pii pair<int,int> #define fr first #define sc second #define mk make_pair int read(){int x=0,f=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9')x=(x<<1)+(x<<3)+(c^48),c=getchar();return x*f;} const int MAXN=20010,inf=1e9,Mod=998244353; void add(int &x,int y){x+=y;if(x>=Mod)x-=Mod;} int n,s[MAXN],f[MAXN],g[MAXN],h[MAXN]; void slv(){ n=read(); s[1]=0,s[2]=1; for(int i=3;i<=n;i++)s[i]=(s[i-1]+1)^(s[i-2]+1); f[0]=1; if(n==1){puts("0");return;} for(int i=3;i<=n;i++){ h[s[i-1]+1]++,h[s[i-2]+1]++; for(int j=0;j<=n;j++)add(h[(j+1)^(s[i-1]+1)],g[j]); for(int j=0;j<=n;j++)add(h[(j+1)^(s[i-2]+1)],f[j]); for(int j=0;j<=n;j++)g[j]=f[j],f[j]=h[j],h[j]=0; } printf("%lld",f[0]); } signed main(){ //freopen("1.in","r",stdin);freopen("1.out","w",stdout); slv(); //cerr<<clock()*1.0/CLOCKS_PER_SEC<<"s\n"; return 0; }