結果
| 問題 |
No.847 Divisors of Power
|
| コンテスト | |
| ユーザー |
hrbt__
|
| 提出日時 | 2019-07-23 19:41:55 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 190 ms / 2,000 ms |
| コード長 | 783 bytes |
| コンパイル時間 | 180 ms |
| コンパイル使用メモリ | 12,416 KB |
| 実行使用メモリ | 10,880 KB |
| 最終ジャッジ日時 | 2024-10-07 02:22:50 |
| 合計ジャッジ時間 | 2,226 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 26 |
ソースコード
#!/usr/bin/env python3
from math import log
ans = 1
def p_factor(n):
p_cnt = {}
for i in range(2, int(n**0.5) + 2):
while n % i == 0:
n //= i
p_cnt[i] = p_cnt[i] + 1 if i in p_cnt else 1
if n > 1:
p_cnt[n] = p_cnt[n] + 1 if n in p_cnt else 1
return p_cnt
def dfs(p_cnt, r, k):
global ans
if k < 0:
ans += 1
return
a, e = p_cnt[k]
for i in range(e + 1):
q = r // a**i
if q > 0:
dfs(p_cnt, q, k - 1)
def main():
n, k, m = map(int, input().split())
p_cnt = p_factor(n)
for i, x in p_cnt.items():
p_cnt[i] = min(k * x, int(log(m, i)))
dfs(sorted(p_cnt.items()), m, len(p_cnt) - 1)
print(ans - 1)
if __name__ == '__main__':
main()
hrbt__