提出 #55754435


ソースコード 拡げる

from collections import defaultdict

MOD=998244353
MAX_PRIME=6
PRIMES=[2,3,5,7,11,13]

def matrix_pow(a,x):
    mat_size=len(a)
    ret=[[0]*mat_size for _ in range(mat_size)]
    for i in range(mat_size):
        ret[i][i]=1
    while x>0:
        if x&1:
            nret=[[0]*mat_size for _ in range(mat_size)]
            for i in range(mat_size):
                for k in range(mat_size):
                    for j in range(mat_size):
                        nret[i][j]+=ret[i][k]*a[k][j]
                        nret[i][j]%=MOD
            ret=nret
        na=[[0]*mat_size for _ in range(mat_size)]
        for i in range(mat_size):
            for k in range(mat_size):
                for j in range(mat_size):
                    na[i][j]+=a[i][k]*a[k][j]
                    na[i][j]%=MOD
        a=na
        x>>=1
    return ret

N,M=map(int,input().split())
mat=[[0]*((1<<MAX_PRIME)+1) for _ in range((1<<MAX_PRIME)+1)]
nxt=defaultdict(int)
for i in range(1<<MAX_PRIME):
    for j in range(1,M+1):
        add=1
        for k in range(MAX_PRIME):
            if not (i>>k)&1:
                continue
            cnt=0
            while j%PRIMES[k]==0:
                cnt+=1
                j//=PRIMES[k]
            add*=cnt
        nxt[i]+=add
for i in range(1<<MAX_PRIME):
    for j in nxt:
        if (i&j)==0:
            mat[i][i|j]+=nxt[j]
mat[(1<<MAX_PRIME)-1][1<<MAX_PRIME]=1
mat[1<<MAX_PRIME][1<<MAX_PRIME]=1
mat=matrix_pow(mat,N+1)
ans=0
for i in range(1<<MAX_PRIME):
    ans+=mat[i][1<<MAX_PRIME]
print((ans-1)%MOD)

提出情報

提出日時
問題 C - Sum of Number of Divisors of Product
ユーザ hirayuu_At
言語 Python (PyPy 3.10-v7.3.12)
得点 600
コード長 1597 Byte
結果 AC
実行時間 484 ms
メモリ 85696 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 600 / 600
結果
AC × 3
AC × 51
セット名 テストケース
Sample 00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt
All 00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt, 01-random-001.txt, 01-random-002.txt, 01-random-003.txt, 01-random-004.txt, 01-random-005.txt, 01-random-006.txt, 01-random-007.txt, 01-random-008.txt, 01-random-009.txt, 01-random-010.txt, 02-large-001.txt, 02-large-002.txt, 02-large-003.txt, 02-large-004.txt, 02-large-005.txt, 02-large-006.txt, 02-large-007.txt, 02-large-008.txt, 02-large-009.txt, 02-large-010.txt, 03-max-001.txt, 03-max-002.txt, 03-max-003.txt, 03-max-004.txt, 03-max-005.txt, 04-small-001.txt, 04-small-002.txt, 04-small-003.txt, 04-small-004.txt, 04-small-005.txt, 04-small-006.txt, 04-small-007.txt, 04-small-008.txt, 04-small-009.txt, 04-small-010.txt, 05-killer-001.txt, 05-killer-002.txt, 05-killer-003.txt, 06-corner-001.txt, 06-corner-002.txt, 06-corner-003.txt, 06-corner-004.txt, 06-corner-005.txt, 06-corner-006.txt, 06-corner-007.txt, 06-corner-008.txt, 06-corner-009.txt, 06-corner-010.txt
ケース名 結果 実行時間 メモリ
00-sample-001.txt AC 97 ms 83588 KiB
00-sample-002.txt AC 104 ms 83344 KiB
00-sample-003.txt AC 196 ms 83688 KiB
01-random-001.txt AC 431 ms 85336 KiB
01-random-002.txt AC 436 ms 85692 KiB
01-random-003.txt AC 442 ms 84936 KiB
01-random-004.txt AC 398 ms 85212 KiB
01-random-005.txt AC 414 ms 85152 KiB
01-random-006.txt AC 457 ms 85296 KiB
01-random-007.txt AC 412 ms 85224 KiB
01-random-008.txt AC 432 ms 84912 KiB
01-random-009.txt AC 409 ms 85172 KiB
01-random-010.txt AC 434 ms 85488 KiB
02-large-001.txt AC 424 ms 85192 KiB
02-large-002.txt AC 424 ms 85432 KiB
02-large-003.txt AC 429 ms 85472 KiB
02-large-004.txt AC 434 ms 85328 KiB
02-large-005.txt AC 408 ms 84968 KiB
02-large-006.txt AC 423 ms 85200 KiB
02-large-007.txt AC 440 ms 85696 KiB
02-large-008.txt AC 425 ms 85048 KiB
02-large-009.txt AC 427 ms 85360 KiB
02-large-010.txt AC 393 ms 85124 KiB
03-max-001.txt AC 416 ms 85420 KiB
03-max-002.txt AC 409 ms 84916 KiB
03-max-003.txt AC 483 ms 85292 KiB
03-max-004.txt AC 471 ms 85516 KiB
03-max-005.txt AC 484 ms 85692 KiB
04-small-001.txt AC 97 ms 83732 KiB
04-small-002.txt AC 106 ms 83972 KiB
04-small-003.txt AC 108 ms 83360 KiB
04-small-004.txt AC 107 ms 83448 KiB
04-small-005.txt AC 107 ms 83540 KiB
04-small-006.txt AC 112 ms 83712 KiB
04-small-007.txt AC 108 ms 83852 KiB
04-small-008.txt AC 113 ms 83596 KiB
04-small-009.txt AC 115 ms 83620 KiB
04-small-010.txt AC 118 ms 83796 KiB
05-killer-001.txt AC 307 ms 84076 KiB
05-killer-002.txt AC 315 ms 84316 KiB
05-killer-003.txt AC 314 ms 84544 KiB
06-corner-001.txt AC 95 ms 83260 KiB
06-corner-002.txt AC 98 ms 83268 KiB
06-corner-003.txt AC 100 ms 83228 KiB
06-corner-004.txt AC 103 ms 83544 KiB
06-corner-005.txt AC 102 ms 83724 KiB
06-corner-006.txt AC 101 ms 83408 KiB
06-corner-007.txt AC 103 ms 83504 KiB
06-corner-008.txt AC 106 ms 83180 KiB
06-corner-009.txt AC 105 ms 83468 KiB
06-corner-010.txt AC 106 ms 83652 KiB