結果

問題 No.1646 Avoid Palindrome
ユーザー tamato
提出日時 2021-08-13 21:47:50
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 690 ms / 3,000 ms
コード長 1,042 bytes
コンパイル時間 324 ms
コンパイル使用メモリ 82,944 KB
実行使用メモリ 77,824 KB
最終ジャッジ日時 2024-11-08 15:06:39
合計ジャッジ時間 20,250 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 40
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

mod = 998244353
eps = 10**-9
def main():
import sys
input = sys.stdin.readline
N = int(input())
S = input().rstrip('\n')
dp = [[0] * 27 for _ in range(27)]
dp[0][0] = 1
for i, s in enumerate(S):
dp_new = [[0] * 27 for _ in range(27)]
if s == "?":
sum_j2 = [0] * 27
for j1 in range(27):
for j2 in range(27):
sum_j2[j2] = (sum_j2[j2] + dp[j1][j2])%mod
for j2 in range(27):
for j in range(1, 27):
if j2 != j:
dp_new[j2][j] = (sum_j2[j2] - dp[j][j2])%mod
else:
j = ord(s) - 96
for j2 in range(27):
for j1 in range(27):
if j1 != j and j2 != j:
dp_new[j2][j] = (dp_new[j2][j] + dp[j1][j2])%mod
dp = dp_new
ans = 0
for j1 in range(27):
for j2 in range(27):
ans = (ans + dp[j1][j2])%mod
print(ans)
if __name__ == '__main__':
main()
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0