結果
問題 | No.1973 Divisor Sequence |
ユーザー |
|
提出日時 | 2022-06-12 09:43:07 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 488 ms / 2,000 ms |
コード長 | 1,214 bytes |
コンパイル時間 | 648 ms |
コンパイル使用メモリ | 82,160 KB |
実行使用メモリ | 84,864 KB |
最終ジャッジ日時 | 2024-09-22 19:30:43 |
合計ジャッジ時間 | 6,014 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 22 |
ソースコード
N,M = map(int,input().split())C = 10 ** 6 + 2P = 10 ** 9 + 7dat = [0] * Cans = 1for i in range(2,C):if dat[i] == 0:for j in range(2 * i,C,i):dat[j] = 1if M % i == 0:M //= icount = 1while M % i == 0:count += 1M //= idp = [1] * (count + 1)for _ in range(N-1):nx = [0] * (count + 1)S = [0] * (count + 1)S[0] = dp[0]for k in range(1,count + 1):S[k] = dp[k] + S[k-1]S[k] %= Pfor k in range(count + 1):nx[k] = S[count - k]dp = nxans = ans * sum(dp) % Pfrom functools import lru_cache@lru_cachedef calc(count):dp = [1] * (count + 1)for _ in range(N - 1):nx = [0] * (count + 1)S = [0] * (count + 1)S[0] = dp[0]for k in range(1,count + 1):S[k] = dp[k] + S[k-1]S[k] %= Pfor k in range(count + 1):nx[k] = S[count - k]dp = nxreturn sum(dp) % Pif M != 1:ans = ans * calc(1) % Pprint(ans)