結果

問題 No.2219 Re:010
ユーザー lam6er
提出日時 2025-03-26 15:44:17
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 65 ms / 2,000 ms
コード長 879 bytes
コンパイル時間 237 ms
コンパイル使用メモリ 82,660 KB
実行使用メモリ 76,036 KB
最終ジャッジ日時 2025-03-26 15:44:21
合計ジャッジ時間 2,428 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 21
権限があれば一括ダウンロードができます

ソースコード

diff #

MOD = 998244353

S = input().strip()

a = 0
b = 0
c = 0
count = 1  # initial number of configurations (no question marks processed yet)

for char in S:
    if char == '0':
        new_a = (a + count) % MOD
        new_b = b % MOD
        new_c = (c + b) % MOD
        new_count = count
    elif char == '1':
        new_a = a % MOD
        new_b = (b + a) % MOD
        new_c = c % MOD
        new_count = count
    else:  # char is '?'
        # case when treated as '0'
        a0 = (a + count) % MOD
        b0 = b % MOD
        c0 = (c + b) % MOD
        
        # case when treated as '1'
        a1 = a % MOD
        b1 = (b + a) % MOD
        c1 = c % MOD
        
        new_a = (a0 + a1) % MOD
        new_b = (b0 + b1) % MOD
        new_c = (c0 + c1) % MOD
        new_count = (count * 2) % MOD
    
    a, b, c, count = new_a, new_b, new_c, new_count

print(c % MOD)
0