提交时间:2024-10-20 14:55:02

运行 ID: 33718

#include<bits/stdc++.h> using namespace std; const int N = 1e6+10,md = 998244353; #define int long long int n,dp[N][2]; char s[N]; signed main(){ //freopen("pairfix.in","r",stdin); //freopen("pairfix.out","w",stdout); char c; while(cin>>c){ s[++n]=c; } dp[1][0]=1; dp[1][1]=2; for(int i=2;i<=n;i++){ if(s[i]=='0'){ dp[i][0]=dp[i-1][0]%md*3%md; dp[i][1]=dp[i-1][1]%md*2%md; } else{ dp[i][0]=(dp[i-1][0]%md*3%md+dp[i-1][1]%md*2%md)%md; dp[i][1]=dp[i-1][1]; } } cout<<(dp[n][1]+dp[n][0])%md<<endl; return 0; }