結果
| 問題 |
No.847 Divisors of Power
|
| コンテスト | |
| ユーザー |
mkawa2
|
| 提出日時 | 2019-07-05 22:31:20 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 1,988 ms / 2,000 ms |
| コード長 | 1,054 bytes |
| コンパイル時間 | 226 ms |
| コンパイル使用メモリ | 82,028 KB |
| 実行使用メモリ | 263,860 KB |
| 最終ジャッジ日時 | 2024-10-06 22:30:40 |
| 合計ジャッジ時間 | 6,837 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 26 |
ソースコード
from heapq import *
def f(n, k, m):
if n == 1:
print(1)
exit()
tei = []
sis = []
cnt = 0
while n % 2 == 0:
n //= 2
cnt += 1
if cnt:
tei = [2]
sis = [cnt * k]
i = 3
while i ** 2 <= n:
cnt = 0
while n % i == 0:
cnt += 1
n //= i
if cnt:
tei += [i]
sis += [cnt * k]
i += 2
if n > 1:
tei += [n]
sis += [k]
# print(sis)
# print(tei)
kos = len(tei)
hp = []
a = [0] * kos
heappush(hp, [1] + a)
used = set()
used.add(tuple(a))
cnt = 0
while 1:
y, *a = heappop(hp)
if y > m: break
for i in range(kos):
if a[i] == sis[i]: continue
ny = y * tei[i]
na = a[:]
na[i] += 1
ta = tuple(na)
if ta in used: continue
heappush(hp, [ny] + na)
used.add(ta)
cnt += 1
print(cnt)
n, k, m = map(int, input().split())
f(n, k, m)
mkawa2