Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
33738 | LYLAKIOIAKIOI | 【S】T1 | C++ | 通过 | 100 | 37 MS | 35388 KB | 1060 | 2024-10-20 16:44:05 |
#include<bits/stdc++.h> #define ll long long using namespace std; const int N=1e6+10,mod=998244353; int x,n;string s;int ans=0; ll f[N][2][2]; int main(){ //double C=clock(); cin>>s; n=s.length();s=' '+s; f[0][1][1]=1; for(int i=1;i<=n;i++){ if(s[i]=='0'){ f[i][0][0]= f[i-1][0][0]*3; f[i][1][0]= f[i-1][1][0]*2; f[i][0][1]= f[i-1][0][1]*2; f[i][1][1]= f[i-1][1][1]; }else{ f[i][0][0]= f[i-1][0][0]*3+ f[i-1][1][0]*2+ f[i-1][0][1]*2+ f[i-1][1][1]; f[i][1][0]= f[i-1][1][0]+ f[i-1][1][1]; f[i][0][1]= f[i-1][0][1]+ f[i-1][1][1]; } f[i][0][0]%=mod; f[i][1][0]%=mod; f[i][0][1]%=mod; f[i][1][1]%=mod; }cout<<(f[n][0][0]+f[n][0][1]+f[n][1][0]+f[n][1][1])%mod; //cerr<<(clock()-C)/CLOCKS_PER_SEC; return 0; }