結果
問題 | No.1646 Avoid Palindrome |
ユーザー | googol_S0 |
提出日時 | 2021-08-13 22:11:11 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,939 ms / 3,000 ms |
コード長 | 624 bytes |
コンパイル時間 | 795 ms |
コンパイル使用メモリ | 82,304 KB |
実行使用メモリ | 467,456 KB |
最終ジャッジ日時 | 2024-11-08 15:26:49 |
合計ジャッジ時間 | 57,219 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 40 |
ソースコード
N=int(input()) S=list(input()) for i in range(N): if S[i]=='?': S[i]=-1 else: S[i]=ord(S[i])-ord('a') DP=[[[0]*27 for j in range(27)] for i in range(N+1)] DP[0][26][26]=1 mod=998244353 for i in range(N): cx=[0]*27 cy=[0]*27 for j in range(27): for k in range(27): cx[j]=(cx[j]+DP[i][j][k])%mod cy[k]=(cy[k]+DP[i][j][k])%mod a=S[i] for j in range(26): for k in range(27): if a==j: if j!=k: DP[i+1][j][k]=(cx[k]-DP[i][k][a])%mod if a==-1: if j!=k: DP[i+1][j][k]=(cx[k]-DP[i][k][j])%mod print(sum([sum(DP[N][i]) for i in range(27)])%mod)