結果
問題 |
No.1646 Avoid Palindrome
|
ユーザー |
![]() |
提出日時 | 2021-08-13 21:42:37 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,632 bytes |
コンパイル時間 | 1,906 ms |
コンパイル使用メモリ | 198,868 KB |
最終ジャッジ日時 | 2025-01-23 18:34:32 |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 9 WA * 31 |
ソースコード
#include <bits/stdc++.h> #include <atcoder/math> using namespace std; using namespace atcoder; #define int long long using vec_int = vector<int>; using vec_ii = vector<vec_int>; using vec_iii = vector<vec_ii>; using vec_iiii = vector<vec_iii>; using P = pair<int,int>; using T = tuple<int,int,int>; using ll = long long; using ld = long double; #define rep(i, n) for(int i = 0; i < (int)(n); i++) void cout_line(vector<int> &a){ for(int i=0;i<a.size();i++){ if(i<a.size()-1){ cout<<a.at(i)<<" "; }else{ cout<<a.at(i)<<endl; } } } int charToInt(char c){ char zero_num = '0'; return (int)c - (int)zero_num; } signed main(){ int N; cin>>N; string S; cin>>S; int MOD = 998244353; rep(i, S.size()-1){ if(S.at(i)!='?'&&S.at(i+1)!='?'){ if(S.at(i)==S.at(i+1)){ cout<<0<<endl; return 0; } } } rep(i, S.size()-2){ if(S.at(i)!='?'&&S.at(i+2)!='?'){ if(S.at(i)==S.at(i+2)){ cout<<0<<endl; return 0; } } } int ans = 1; rep(i, S.size()){ if(S.at(i)=='?'){ int minus = 0; if(i>0)minus++; if(i>1)minus++; if(N-i>1){ if(S.at(i+1)!='?'){ minus++; } } if(N-i>2){ if(S.at(i+2)!='?'){ minus++; } } ans *= 26-minus; ans %= MOD; } } cout<<ans<<endl; return 0; }