結果

問題 No.1186 長方形の敷き詰め
ユーザー lam6er
提出日時 2025-04-16 15:54:18
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 722 bytes
コンパイル時間 229 ms
コンパイル使用メモリ 81,540 KB
実行使用メモリ 171,952 KB
最終ジャッジ日時 2025-04-16 15:56:22
合計ジャッジ時間 2,369 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 21 WA * 3
権限があれば一括ダウンロードができます

ソースコード

diff #

MOD = 998244353

N, M = map(int, input().split())

if N > M:
    print(1 % MOD)
else:
    from collections import defaultdict
    sum_prev = defaultdict(int)
    sum_prev[0] = 1  # Initialize for i=0
    dp0_prev = 1
    dp1_prev = 0
    
    for i in range(1, M + 1):
        current_dp0 = (dp0_prev + dp1_prev) % MOD
        r = i % N
        current_dp1 = 0
        if i >= N:
            current_dp1 = sum_prev.get(r, 0) % MOD
        # Update sum_prev with current_dp0 for the current remainder
        sum_prev[r] = (sum_prev.get(r, 0) + current_dp0) % MOD
        # Update dp0_prev and dp1_prev for the next iteration
        dp0_prev, dp1_prev = current_dp0, current_dp1
    
    print((dp0_prev + dp1_prev) % MOD)
0