結果

問題 No.2001 Distanced Triple
ユーザー to-omerto-omer
提出日時 2022-01-31 18:14:13
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 576 ms / 2,000 ms
コード長 898 bytes
コンパイル時間 314 ms
コンパイル使用メモリ 81,920 KB
実行使用メモリ 81,868 KB
最終ジャッジ日時 2024-07-02 19:01:30
合計ジャッジ時間 7,940 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 61 ms
63,232 KB
testcase_01 AC 60 ms
62,464 KB
testcase_02 AC 492 ms
80,192 KB
testcase_03 AC 292 ms
79,208 KB
testcase_04 AC 281 ms
79,588 KB
testcase_05 AC 263 ms
79,460 KB
testcase_06 AC 50 ms
55,040 KB
testcase_07 AC 326 ms
80,392 KB
testcase_08 AC 50 ms
54,912 KB
testcase_09 AC 50 ms
54,272 KB
testcase_10 AC 576 ms
80,628 KB
testcase_11 AC 50 ms
54,784 KB
testcase_12 AC 50 ms
54,272 KB
testcase_13 AC 49 ms
54,912 KB
testcase_14 AC 50 ms
54,784 KB
testcase_15 AC 50 ms
54,400 KB
testcase_16 AC 50 ms
54,272 KB
testcase_17 AC 49 ms
55,040 KB
testcase_18 AC 50 ms
54,400 KB
testcase_19 AC 49 ms
54,656 KB
testcase_20 AC 50 ms
54,784 KB
testcase_21 AC 366 ms
81,868 KB
testcase_22 AC 240 ms
79,012 KB
testcase_23 AC 49 ms
54,912 KB
testcase_24 AC 49 ms
54,272 KB
testcase_25 AC 227 ms
79,136 KB
testcase_26 AC 247 ms
79,728 KB
testcase_27 AC 567 ms
80,756 KB
testcase_28 AC 551 ms
80,884 KB
testcase_29 AC 49 ms
54,400 KB
testcase_30 AC 49 ms
54,656 KB
testcase_31 AC 563 ms
81,008 KB
testcase_32 AC 542 ms
80,232 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

from functools import lru_cache
from itertools import product

MOD = 998244353


@lru_cache(None)
def solve(L, R, A, B, C):
    if L + max(A + B, C) > R:
        return 0
    if L >= R:
        return int(L == R and A == 0 and B == 0 and C == 0)
    res = 0
    for (x0, y0, z0) in product(range(10), repeat=3):
        # L<=x
        nL, L0 = divmod(L, 10)
        nL += L0 > x0
        # x+A<=y
        nA, A0 = divmod(x0 + A, 10)
        nA += A0 > y0
        # y+B<=z
        nB, B0 = divmod(y0 + B, 10)
        nB += B0 > z0
        # x+C<=z
        nC, C0 = divmod(x0 + C, 10)
        nC += C0 > z0
        # z<=R
        nR, R0 = divmod(R, 10)
        nR -= z0 > R0
        res += solve(nL, nR, nA, nB, nC)
    return res % MOD


def main():
    L, R = map(int, input().split())
    A, B, C = map(int, input().split())
    print(solve(L, R, A, B, C))


if __name__ == "__main__":
    main()
0