結果

問題 No.3304 INCREASE decrease
ユーザー kidodesu
提出日時 2025-10-05 14:15:06
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 604 ms / 2,000 ms
コード長 723 bytes
コンパイル時間 330 ms
コンパイル使用メモリ 82,652 KB
実行使用メモリ 79,648 KB
最終ジャッジ日時 2025-10-05 14:15:34
合計ジャッジ時間 15,465 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 30
権限があれば一括ダウンロードができます

ソースコード

diff #

mod = 998244353
def make(t):
    if t % 2:
        k = t // 2
        l = 2
        r = t - 1
        return (l + r) * k // 2 % mod
    else:
        k = t // 2
        l = 1
        r = t - 1
        return (l + r) * k // 2 % mod
        

def made0(t):
    return t // 2

def made2(t):
    if t % 2:
        k = t // 2
        return (1 + k) * k
    else:
        k = t // 2
        return (1 + k) * k - k

def made1(t, r):
    l = r - t - 1
    r = r
    return made2(r) - made2(l)

def main():
    n, k = map(int, input().split())
    n -= 1
    ans = make(n//10**k-1) * make(10**k-1) % mod
    ans += made0(n//10**k) * made1(n%10**k, 10**k-1) % mod
    return ans % mod

for _ in range(int(input())):
    print(main())
0