結果

問題 No.1581 Multiple Sequence
ユーザー MineMine
提出日時 2022-01-11 22:44:37
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 418 ms / 2,000 ms
コード長 841 bytes
コンパイル時間 372 ms
コンパイル使用メモリ 81,900 KB
実行使用メモリ 79,124 KB
最終ジャッジ日時 2024-11-14 12:16:27
合計ジャッジ時間 7,651 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 41 ms
54,116 KB
testcase_01 AC 41 ms
54,256 KB
testcase_02 AC 352 ms
78,624 KB
testcase_03 AC 378 ms
78,600 KB
testcase_04 AC 178 ms
77,640 KB
testcase_05 AC 391 ms
79,124 KB
testcase_06 AC 237 ms
77,960 KB
testcase_07 AC 176 ms
77,812 KB
testcase_08 AC 202 ms
77,756 KB
testcase_09 AC 362 ms
78,420 KB
testcase_10 AC 277 ms
78,356 KB
testcase_11 AC 137 ms
78,056 KB
testcase_12 AC 217 ms
77,788 KB
testcase_13 AC 95 ms
77,128 KB
testcase_14 AC 385 ms
78,548 KB
testcase_15 AC 303 ms
78,412 KB
testcase_16 AC 147 ms
77,380 KB
testcase_17 AC 408 ms
78,828 KB
testcase_18 AC 128 ms
77,512 KB
testcase_19 AC 352 ms
78,328 KB
testcase_20 AC 361 ms
78,636 KB
testcase_21 AC 379 ms
78,896 KB
testcase_22 AC 263 ms
78,308 KB
testcase_23 AC 418 ms
78,896 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

from collections import defaultdict
import itertools


def Sieve_of_Eratosthenes(maxA):
    lst = [-1]*(maxA+1)
    lst[0] = 0
    lst[1] = 1
    for i in range(2, maxA+1):
        if lst[i] == -1:
            for g in range(i, maxA+1, i):
                lst[g] = i
    return lst


def factorization(n):
    d = defaultdict(int)
    now = n
    while now != 1:
        r = lst[now]
        now //= r
        d[r] += 1
    divs = []
    for l in itertools.product(*[range(v+1) for v in d.values()]):
        div = 1
        for idx, k in enumerate(d):
            div *= k**l[idx]
        divs.append(div)
    return divs


m = int(input())
mod = 10**9+7
lst = Sieve_of_Eratosthenes(m+1)
dp = [0]*(m+1)
dp[0] = 1
for i in range(1, m+1):
    f = factorization(i)
    for j in f:
        dp[i] += dp[i//j-1]
        dp[i] %= mod
print(dp[m])
0