Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
33701 A21μΘ_wjy 【S】T1 C++ 通过 100 44 MS 66640 KB 1285 2024-10-20 13:57:47

Tests(10/10):


#include<bits/stdc++.h> #define int long long using namespace std; const int maxn=1e6+7; const int mod=998244353; //g++ *.cpp -o2 -std=c++14 -static -o * //./* string s; int n; bool b[maxn]; int dp[maxn][2][2]; signed main(){ cin>>s;n=s.length(); for(int i=1;i<=n;i++)b[i]=s[i-1]-'0'; dp[0][1][1]=1; for(int i=1;i<=n;i++){ // i-1,0,0 dp[i][0][0]=(dp[i][0][0]+dp[i-1][0][0]*3%mod)%mod; // i-1,0,1 if(b[i]){ dp[i][0][0]=(dp[i][0][0]+dp[i-1][0][1]*2%mod)%mod; dp[i][0][1]=(dp[i][0][1]+dp[i-1][0][1])%mod; } else dp[i][0][1]=(dp[i][0][1]+dp[i-1][0][1]*2)%mod; // i-1,1,0 if(b[i]){ dp[i][0][0]=(dp[i][0][0]+dp[i-1][1][0]*2%mod)%mod; dp[i][1][0]=(dp[i][1][0]+dp[i-1][1][0])%mod; } else dp[i][1][0]=(dp[i][1][0]+dp[i-1][1][0]*2)%mod; // i-1,1,1 if(b[i]){ dp[i][0][0]=(dp[i][0][0]+dp[i-1][1][1])%mod; dp[i][1][0]=(dp[i][1][0]+dp[i-1][1][1])%mod; dp[i][0][1]=(dp[i][0][1]+dp[i-1][1][1])%mod; } else dp[i][1][1]=(dp[i][1][1]+dp[i-1][1][1])%mod; } cout<<((dp[n][0][0]+dp[n][0][1]+dp[n][1][0]+dp[n][1][1])%mod)<<endl; return 0; }


测评信息: