結果
| 問題 | 
                            No.2132 1 or X Game
                             | 
                    
| コンテスト | |
| ユーザー | 
                             | 
                    
| 提出日時 | 2022-11-25 23:35:40 | 
| 言語 | PyPy3  (7.3.15)  | 
                    
| 結果 | 
                             
                                WA
                                 
                             
                            
                         | 
                    
| 実行時間 | - | 
| コード長 | 1,468 bytes | 
| コンパイル時間 | 810 ms | 
| コンパイル使用メモリ | 81,992 KB | 
| 実行使用メモリ | 77,564 KB | 
| 最終ジャッジ日時 | 2024-10-02 06:04:51 | 
| 合計ジャッジ時間 | 3,672 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge5 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 1 | 
| other | WA * 11 | 
ソースコード
import sys
input = sys.stdin.readline
from collections import *
def grundy(c, t, f1, f2):
    if memo[c][t][f1][f2]!=-1:
        return memo[c][t][f1][f2]
    
    if c==0:
        return 0
    
    s = set()
    
    if t==0:
        s.add(grundy(c-1, 1^t, 1, f2))
        
        if c-X>=0 and f1==1:
            s.add(grundy(c-X, 1^t, 0, f2))
    else:
        s.add(grundy(c-1, 1^t, f1, 1))
        
        if c-X>=0 and f2==1:
            s.add(grundy(c-X, 1^t, f1, 0))
    
    res = 0
    
    while res in s:
        res += 1
    
    memo[c][t][f1][f2] = res
    return res
# for X in range(100):
#     print('X:', X, '|', end=' ')
#     memo = [[[[-1]*2 for _ in range(2)] for _ in range(2)] for _ in range(110)]
#     acc = 0
#     for N in range(100):
#         g = grundy(N, 0, 1, 1)
#         # print(1 if g>=1 else 0, end=' ')
        
#         if X%2==0:
#             if g>=1:
#                 acc += 1
#             print(acc, end=' ')
        
#     print()
MOD = 998244353
for _ in range(int(input())):
    N, X = map(int, input().split())
    
    if X%2==1:
        ans = (N-N//2)%MOD
        print(ans)
    else:
        s = X//2
        d = 2+X//2
        
        if N<s:
            ans = (N+1)//2%MOD
        else:
            if N%2==0:
                ans = (N+1)//2+(N-s+1)//d//2
                ans %= MOD
            else:
                ans = (N+1)//2+(N-s+1)//d//2-1
                ans %= MOD
            
        print(ans)