結果
問題 | No.2019 Digits Filling for All Substrings |
ユーザー | tamato |
提出日時 | 2022-07-22 22:55:56 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 120 ms / 2,000 ms |
コード長 | 1,184 bytes |
コンパイル時間 | 147 ms |
コンパイル使用メモリ | 82,564 KB |
実行使用メモリ | 76,860 KB |
最終ジャッジ日時 | 2024-07-04 07:28:22 |
合計ジャッジ時間 | 3,562 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 30 |
ソースコード
mod = 998244353 def main(): import sys input = sys.stdin.readline N = int(input()) S = input().rstrip('\n') ans = 0 for m in range(3): dp = [0] * 3 for i, s in enumerate(S): dp_new = [0] * 3 if s == "?": if m: #ans = (ans + 3) % mod dp_new[m] = 3 else: #ans = (ans + 4) % mod dp_new[m] = 4 for j in range(3): dp_new[j] = (dp_new[j] + (dp[j] * 4)%mod) % mod dp_new[(j+1)%3] = (dp_new[(j+1)%3] + (dp[j] * 3) % mod) % mod dp_new[(j+2)%3] = (dp_new[(j+2)%3] + (dp[j] * 3) % mod) % mod else: s = int(s) if s % 3 == m: #ans += 1 #ans %= mod dp_new[m] = 1 for j in range(3): dp_new[(j + s) % 3] = (dp_new[(j + s) % 3] + dp[j])%mod dp = dp_new #print(m, dp) ans = (ans + dp[0])%mod #print(m, ans) print(ans) if __name__ == '__main__': main()