結果
| 問題 |
No.2132 1 or X Game
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2022-11-25 23:47:32 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,655 bytes |
| コンパイル時間 | 672 ms |
| コンパイル使用メモリ | 82,560 KB |
| 実行使用メモリ | 77,568 KB |
| 最終ジャッジ日時 | 2024-10-02 06:16:48 |
| 合計ジャッジ時間 | 4,400 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| 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()
def f(N):
res = 0
for i in range(1, N+1):
if grundy(i, 0, 1, 1)>=1:
res += 1
return res
MOD = 998244353
for _ in range(int(input())):
N, X = map(int, input().split())
if X%2==1:
ans = (N-N//2)%MOD
# print(ans, f(N))
print(ans)
else:
s = X//2
d = 2+X//2
if N//2<s:
ans = (N+1)//2%MOD
else:
if N%2==0:
ans = (N+1)//2+((N+1)//2-s)//d+1
ans %= MOD
else:
ans = (N+1)//2+((N+1)//2-s)//d
ans %= MOD
# print(ans, f(N))
print(ans)