Submission #32588657


Source Code Expand

from itertools import accumulate

def kaisetsu3(N, B, K, c):
    MOD = 1000000007

    *ten, = accumulate(range(10, 72), lambda acc, _: (acc ** 2) % B)
    
    def mul(x, exp, y):
        res = [0] * B
        for p in range(B):
            for q in range(B):
                nex = (ten[exp] * p + q) % B
                res[nex] += x[p] * y[q]
                res[nex] %= MOD
        
        return res
        
    # dp[1][i] を求める
    doubled = [0] * B
    for k in c:
        doubled[k%B] += 1
    
    if N & 1:
        ans = doubled
    else:
        ans = [0] * B
        ans[0] = 1
    N >>= 1
    
    exp = 0
    while N:
        # 2^epx桁目から2^(exp+1)桁目を計算
        doubled = mul(doubled, exp, doubled)
        exp += 1
        if N & 1:
            ans = mul(ans, exp, doubled)

        N >>= 1
    return ans[0]
  

N, B, K, *c = map(int, open(0).read().split())
print(kaisetsu3(N, B, K, c))

Submission Info

Submission Time
Task 005 - Restricted Digits(★7)
User arakaki_tokyo
Language PyPy3 (7.3.0)
Score 7
Code Size 970 Byte
Status AC
Exec Time 2784 ms
Memory 73664 KiB

Judge Result

Set Name Sample Subtask1 Subtask2 Subtask3
Score / Max Score 0 / 0 1 / 1 3 / 3 3 / 3
Status
AC × 5
AC × 19
AC × 30
AC × 41
Set Name Test Cases
Sample subtask01_01_sample_01.txt, subtask01_01_sample_02.txt, subtask01_01_sample_03.txt, subtask02_01_sample_04.txt, subtask03_01_sample_05.txt
Subtask1 subtask01_01_sample_01.txt, subtask01_01_sample_02.txt, subtask01_01_sample_03.txt, subtask01_02_hand_01.txt, subtask01_02_hand_02.txt, subtask01_02_hand_03.txt, subtask01_02_hand_04.txt, subtask01_02_hand_05.txt, subtask01_02_hand_06.txt, subtask01_02_hand_07.txt, subtask01_02_hand_08.txt, subtask01_03_random_01.txt, subtask01_03_random_02.txt, subtask01_03_random_03.txt, subtask01_03_random_04.txt, subtask01_03_random_05.txt, subtask01_03_random_06.txt, subtask01_03_random_07.txt, subtask01_04_max_07.txt
Subtask2 subtask01_01_sample_01.txt, subtask01_01_sample_02.txt, subtask01_01_sample_03.txt, subtask01_02_hand_01.txt, subtask01_02_hand_02.txt, subtask01_02_hand_03.txt, subtask01_02_hand_04.txt, subtask01_02_hand_05.txt, subtask01_02_hand_06.txt, subtask01_02_hand_07.txt, subtask01_02_hand_08.txt, subtask01_03_random_01.txt, subtask01_03_random_02.txt, subtask01_03_random_03.txt, subtask01_03_random_04.txt, subtask01_03_random_05.txt, subtask01_03_random_06.txt, subtask01_03_random_07.txt, subtask01_04_max_07.txt, subtask02_01_sample_04.txt, subtask02_05_random_01.txt, subtask02_05_random_02.txt, subtask02_05_random_03.txt, subtask02_05_random_04.txt, subtask02_05_random_05.txt, subtask02_05_random_06.txt, subtask02_05_random_07.txt, subtask02_06_max_07.txt, subtask02_07_slow_doubling_killer_01.txt, subtask02_07_slow_doubling_killer_02.txt
Subtask3 subtask01_01_sample_01.txt, subtask01_01_sample_02.txt, subtask01_01_sample_03.txt, subtask01_02_hand_01.txt, subtask01_02_hand_02.txt, subtask01_02_hand_03.txt, subtask01_02_hand_04.txt, subtask01_02_hand_05.txt, subtask01_02_hand_06.txt, subtask01_02_hand_07.txt, subtask01_02_hand_08.txt, subtask01_03_random_01.txt, subtask01_03_random_02.txt, subtask01_03_random_03.txt, subtask01_03_random_04.txt, subtask01_03_random_05.txt, subtask01_03_random_06.txt, subtask01_03_random_07.txt, subtask01_04_max_07.txt, subtask02_01_sample_04.txt, subtask02_05_random_01.txt, subtask02_05_random_02.txt, subtask02_05_random_03.txt, subtask02_05_random_04.txt, subtask02_05_random_05.txt, subtask02_05_random_06.txt, subtask02_05_random_07.txt, subtask02_06_max_07.txt, subtask02_07_slow_doubling_killer_01.txt, subtask02_07_slow_doubling_killer_02.txt, subtask03_01_sample_05.txt, subtask03_08_random_01.txt, subtask03_08_random_02.txt, subtask03_08_random_03.txt, subtask03_08_random_04.txt, subtask03_08_random_05.txt, subtask03_08_random_06.txt, subtask03_08_random_07.txt, subtask03_09_max_07.txt, subtask03_10_slow_doubling_killer_01.txt, subtask03_10_slow_doubling_killer_02.txt
Case Name Status Exec Time Memory
subtask01_01_sample_01.txt AC 61 ms 62248 KiB
subtask01_01_sample_02.txt AC 50 ms 62280 KiB
subtask01_01_sample_03.txt AC 54 ms 65384 KiB
subtask01_02_hand_01.txt AC 53 ms 62068 KiB
subtask01_02_hand_02.txt AC 48 ms 62292 KiB
subtask01_02_hand_03.txt AC 48 ms 62064 KiB
subtask01_02_hand_04.txt AC 53 ms 65852 KiB
subtask01_02_hand_05.txt AC 48 ms 62344 KiB
subtask01_02_hand_06.txt AC 48 ms 62260 KiB
subtask01_02_hand_07.txt AC 44 ms 64276 KiB
subtask01_02_hand_08.txt AC 46 ms 62140 KiB
subtask01_03_random_01.txt AC 52 ms 64560 KiB
subtask01_03_random_02.txt AC 54 ms 66500 KiB
subtask01_03_random_03.txt AC 58 ms 65384 KiB
subtask01_03_random_04.txt AC 53 ms 65424 KiB
subtask01_03_random_05.txt AC 56 ms 66824 KiB
subtask01_03_random_06.txt AC 51 ms 65408 KiB
subtask01_03_random_07.txt AC 53 ms 65236 KiB
subtask01_04_max_07.txt AC 56 ms 65468 KiB
subtask02_01_sample_04.txt AC 58 ms 65984 KiB
subtask02_05_random_01.txt AC 54 ms 65756 KiB
subtask02_05_random_02.txt AC 55 ms 66012 KiB
subtask02_05_random_03.txt AC 50 ms 62220 KiB
subtask02_05_random_04.txt AC 58 ms 68516 KiB
subtask02_05_random_05.txt AC 54 ms 66016 KiB
subtask02_05_random_06.txt AC 55 ms 65860 KiB
subtask02_05_random_07.txt AC 53 ms 65828 KiB
subtask02_06_max_07.txt AC 54 ms 66024 KiB
subtask02_07_slow_doubling_killer_01.txt AC 57 ms 66028 KiB
subtask02_07_slow_doubling_killer_02.txt AC 57 ms 66036 KiB
subtask03_01_sample_05.txt AC 1832 ms 73472 KiB
subtask03_08_random_01.txt AC 900 ms 73600 KiB
subtask03_08_random_02.txt AC 400 ms 69756 KiB
subtask03_08_random_03.txt AC 176 ms 68160 KiB
subtask03_08_random_04.txt AC 1755 ms 73552 KiB
subtask03_08_random_05.txt AC 1885 ms 73492 KiB
subtask03_08_random_06.txt AC 2007 ms 73532 KiB
subtask03_08_random_07.txt AC 2006 ms 73512 KiB
subtask03_09_max_07.txt AC 2017 ms 73664 KiB
subtask03_10_slow_doubling_killer_01.txt AC 2776 ms 73396 KiB
subtask03_10_slow_doubling_killer_02.txt AC 2784 ms 73636 KiB