E - Duplicate Editorial by nesya
楽な実装公式解説ではランレングス圧縮を用いていますが、使わなくても実装できます。詳しくは以下の実装例を参照してください。
- 実装例(C++)
#include <bits/stdc++.h>
using namespace std;
#include "atcoder/modint.hpp"
using mint = atcoder::modint998244353;
int main() {
int N;
string S;
cin >> N >> S;
for(int i=0; i+1<N; i++){
if(S[i]!='1' && S[i+1]!='1'){
cout << "-1";
return 0;
}
}
mint ans=0;
for(int i=N-1; i>=1; i--){
ans++; //S[i]を消すのに1手かかる
ans += ans*(S[i]-'1'); //S[i]によって増える'1'の個数をansに加算
}
cout << ans.val();
return 0;
}
posted:
last update: