提交时间:2025-10-18 15:40:56

运行 ID: 38673

#include<bits/stdc++.h> #define ll long long using namespace std; const int maxn=1e4+10; const ll inf=1e9; const ll mod=998244353; ll n,m,t; ll a,b; int f[maxn],num[maxn][maxn]; int main(){ //freopen("test.in","r",stdin); //freopen("test.out","w",stdout); scanf("%lld",&n); memset(f,0,sizeof(f)); memset(num,0,sizeof(num)); f[2]=1,num[2][0]=1; int mx=1; for(int i=3;i<=n;i++) f[i]=(f[i-1]+1)^(f[i-2]+1),mx=max(f[i],mx); for(int i=3;i<=n;i++){ for(int j=0;j<=mx;j++){ num[i][j]=((j==f[i-2]+1?1:num[i-1][(j^(f[i-2]+1))-1])+(j==f[i-1]+1?1:num[i-2][(j^(f[i-1]+1))-1]))%mod; // cout<<i<<" "<<j<<" "<<num[i][j]<<endl; } } printf("%lld",num[n][0]); return 0; }