提出 #15082801


ソースコード 拡げる

#!/usr/bin/env python3

#from collections import defaultdict
#from heapq import heappush, heappop
import sys

sys.setrecursionlimit(10**6)
input = sys.stdin.buffer.readline
INF = 10 ** 9 + 1  # sys.maxsize # float("inf")
MOD = 10 ** 9 + 7


def debug(*x):
    print(*x, file=sys.stderr)


def solve(K, D):
    K = [x - ord("0") for x in K]
    N = len(K)
    less = [[0] * D for i in range(N + 1)]
    border = 0
    debug(": K, N", K, N)
    debug(": less", less)
    for i in range(N):
        for j in range(10):
            for d in range(D):
                less[i][(d + j) % D] += less[i - 1][d]
                less[i][(d + j) % D] %= MOD
            if j < K[i]:
                less[i][(border + j) % D] += 1
        border += K[i]
        border %= D

    debug(": less", less)
    ret = less[N - 1][0] - 1
    ret += (border == 0)
    return ret % MOD


def main():
    # parse input
    K = input().strip()
    D = int(input())
    print(solve(K, D))


# tests
T1 = """
30
4
"""


def test_T1():
    """
    >>> as_input(T1)
    >>> main()
    6
    """


T2 = """
1000000009
1
"""


def test_T2():
    """
    >>> as_input(T2)
    >>> main()
    2
    """


T3 = """
98765432109876543210
58
"""


def test_T3():
    """
    >>> as_input(T3)
    >>> main()
    635270834
    """


T4 = """
555
1
"""


def test_T4():
    """
    >>> as_input(T4)
    >>> main()
    555
    """


T6 = """
5
1
"""


def test_T6():
    """
    >>> as_input(T6)
    >>> main()
    5
    """

# add tests above


def _test():
    import doctest
    doctest.testmod()


def as_input(s):
    "use in test, use given string as input file"
    import io
    global read, input
    f = io.StringIO(s.strip())

    def input():
        return bytes(f.readline(), "ascii")

    def read():
        return bytes(f.read(), "ascii")


USE_NUMBA = False
if (USE_NUMBA and sys.argv[-1] == 'ONLINE_JUDGE') or sys.argv[-1] == '-c':
    print("compiling")
    from numba.pycc import CC
    cc = CC('my_module')
    cc.export('solve', solve.__doc__.strip().split()[0])(solve)
    cc.compile()
    exit()
else:
    input = sys.stdin.buffer.readline
    read = sys.stdin.buffer.read

    if (USE_NUMBA and sys.argv[-1] != '-p') or sys.argv[-1] == "--numba":
        # -p: pure python mode
        # if not -p, import compiled module
        from my_module import solve  # pylint: disable=all
    elif sys.argv[-1] == "-t":
        print("testing")
        _test()
        sys.exit()
    elif sys.argv[-1] != '-p' and len(sys.argv) == 2:
        # input given as file
        input_as_file = open(sys.argv[1])
        input = input_as_file.buffer.readline
        read = input_as_file.buffer.read

    main()

提出情報

提出日時
問題 S - Digit Sum
ユーザ nishiohirokazu
言語 PyPy3 (7.3.0)
得点 100
コード長 2845 Byte
結果 AC
実行時間 389 ms
メモリ 153160 KiB

ジャッジ結果

セット名 All
得点 / 配点 100 / 100
結果
AC × 25
セット名 テストケース
All 0_00, 0_01, 0_02, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11, 1_12, 1_13, 1_14, 1_15, 1_16, 1_17, 1_18, 1_19, 1_20, 1_21
ケース名 結果 実行時間 メモリ
0_00 AC 74 ms 62192 KiB
0_01 AC 58 ms 62576 KiB
0_02 AC 61 ms 65788 KiB
1_00 AC 54 ms 62432 KiB
1_01 AC 57 ms 62732 KiB
1_02 AC 87 ms 75184 KiB
1_03 AC 389 ms 153160 KiB
1_04 AC 374 ms 149136 KiB
1_05 AC 330 ms 138332 KiB
1_06 AC 348 ms 142280 KiB
1_07 AC 330 ms 138284 KiB
1_08 AC 384 ms 151704 KiB
1_09 AC 380 ms 151348 KiB
1_10 AC 377 ms 149972 KiB
1_11 AC 362 ms 143368 KiB
1_12 AC 340 ms 141724 KiB
1_13 AC 382 ms 150556 KiB
1_14 AC 382 ms 150992 KiB
1_15 AC 377 ms 150216 KiB
1_16 AC 356 ms 144560 KiB
1_17 AC 385 ms 150524 KiB
1_18 AC 327 ms 136536 KiB
1_19 AC 333 ms 139212 KiB
1_20 AC 61 ms 62584 KiB
1_21 AC 58 ms 62472 KiB