結果
問題 | No.1740 Alone 'a' |
ユーザー |
![]() |
提出日時 | 2021-11-13 11:24:26 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 429 ms / 2,000 ms |
コード長 | 1,014 bytes |
コンパイル時間 | 84 ms |
コンパイル使用メモリ | 12,672 KB |
実行使用メモリ | 11,136 KB |
最終ジャッジ日時 | 2024-11-27 04:18:05 |
合計ジャッジ時間 | 8,887 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 38 |
ソースコード
import sys#input = sys.stdin.readline#input = sys.stdin.buffer.readlinedef main():n = int(input()); MOD = 998244353s = str(input())#dp[i][j][k]:i文字目まで見て、j=0(余裕)/1(ちょうど一致)k=0(未使用)1(a一回),dp = [[0]*2 for _ in range(2)]dp[1][0] = 1for i in range(n):p = [[0]*2 for _ in range(2)]p,dp = dp,pif s[i] != 'a':miman = ord(s[i]) - ord('a') #必ず1以上dp[0][0] = p[0][0]*25 + p[1][0]*(miman - 1)dp[0][1] = p[0][0]*1 + p[0][1]*25 + p[1][0] + p[1][1]*(miman - 1)dp[1][0] = p[1][0]dp[1][1] = p[1][1]else:dp[0][0] = p[0][0]*25dp[0][1] = p[0][0]*1 + p[0][1]*25dp[1][0] = 0dp[1][1] = p[1][0]#MOD取るfor j in range(2):for k in range(2):dp[j][k] %= MOD#print(dp)ans = dp[0][1]print(ans%MOD)if __name__ == '__main__':main()