結果
| 問題 |
No.2302 Carry X Times
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-03-16 16:00:01 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 192 ms / 2,000 ms |
| コード長 | 1,701 bytes |
| コンパイル時間 | 372 ms |
| コンパイル使用メモリ | 82,560 KB |
| 実行使用メモリ | 76,944 KB |
| 最終ジャッジ日時 | 2024-09-30 04:04:17 |
| 合計ジャッジ時間 | 4,954 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 24 |
ソースコード
MOD = 998244353
def solve():
n, x = map(int, input().split())
dp = [[0] * 8 for _ in range(x + 1)]
dp[0][0] = 1
while n > 0:
t = n % 10
ndp = [[0] * 8 for _ in range(x + 1)]
for i in range(x + 1):
for le1 in range(2):
for le2 in range(2):
for car in range(2):
for a in range(10):
if a > t:
nle1 = 1
elif a < t:
nle1 = 0
else:
nle1 = le1
for b in range(10):
if b > t:
nle2 = 1
elif b < t:
nle2 = 0
else:
nle2 = le2
if car + a + b >= 10:
ni = i + 1
if ni == x + 1:
continue
ncar = 1
else:
ni = i
ncar = 0
nbit = (nle1 << 2) + (nle2 << 1) + ncar
bit = (le1 << 2) + (le2 << 1) + car
ndp[ni][nbit] += dp[i][bit]
ndp[ni][nbit] %= MOD
dp = ndp
n //= 10
ans = dp[x][0] + dp[x][1]
print(ans % MOD)
for _ in range(int(input())):
solve()