結果
問題 | No.2798 Multiple Chain |
ユーザー | ああいい |
提出日時 | 2024-06-29 13:59:38 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 72 ms / 2,000 ms |
コード長 | 819 bytes |
コンパイル時間 | 215 ms |
コンパイル使用メモリ | 82,304 KB |
実行使用メモリ | 59,136 KB |
最終ジャッジ日時 | 2024-06-29 13:59:44 |
合計ジャッジ時間 | 4,306 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 51 |
ソースコード
N = int(input()) C = 10 ** 6 + 5 l = [] for i in range(2,C): if N % i == 0: count = 0 while N % i == 0: count += 1 N //= i l.append(count) if N > 1: end = N start = 1 while end - start > 1: mid = end + start >> 1 if mid * mid <= N: start = mid else: end = mid if start * start == N: l.append(2) else: l.append(1) T = max(l) dp = [[0] * (T + 1) for _ in range(T + 1)] for i in range(1,T + 1): dp[i][i] = 1 for i in range(1,T): for j in range(1,T + 1): for u in range(j,T - j + 1): if i + u > T:break dp[i + u][u] += dp[i][j] ans = 1 for i in l: tmp = 0 for j in range(T + 1): tmp += dp[i][j] ans *= tmp print(ans)