結果

問題 No.1581 Multiple Sequence
ユーザー MineMine
提出日時 2022-01-11 22:44:37
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 400 ms / 2,000 ms
コード長 841 bytes
コンパイル時間 296 ms
コンパイル使用メモリ 82,432 KB
実行使用メモリ 78,848 KB
最終ジャッジ日時 2024-04-26 21:12:32
合計ジャッジ時間 7,388 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 42 ms
53,632 KB
testcase_01 AC 42 ms
53,504 KB
testcase_02 AC 338 ms
78,720 KB
testcase_03 AC 373 ms
78,336 KB
testcase_04 AC 188 ms
77,568 KB
testcase_05 AC 375 ms
78,592 KB
testcase_06 AC 236 ms
78,080 KB
testcase_07 AC 187 ms
77,568 KB
testcase_08 AC 210 ms
77,440 KB
testcase_09 AC 347 ms
78,720 KB
testcase_10 AC 276 ms
78,080 KB
testcase_11 AC 143 ms
77,696 KB
testcase_12 AC 222 ms
77,952 KB
testcase_13 AC 102 ms
77,184 KB
testcase_14 AC 366 ms
78,720 KB
testcase_15 AC 299 ms
78,464 KB
testcase_16 AC 148 ms
77,440 KB
testcase_17 AC 379 ms
78,720 KB
testcase_18 AC 134 ms
77,056 KB
testcase_19 AC 330 ms
78,720 KB
testcase_20 AC 356 ms
78,848 KB
testcase_21 AC 370 ms
78,720 KB
testcase_22 AC 272 ms
78,208 KB
testcase_23 AC 400 ms
78,720 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