提出 #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 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| 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 |