結果
| 問題 |
No.1611 Minimum Multiple with Double Divisors
|
| コンテスト | |
| ユーザー |
hir355
|
| 提出日時 | 2021-07-21 22:14:51 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 993 bytes |
| コンパイル時間 | 195 ms |
| コンパイル使用メモリ | 82,120 KB |
| 実行使用メモリ | 78,080 KB |
| 最終ジャッジ日時 | 2024-07-17 19:02:02 |
| 合計ジャッジ時間 | 9,888 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 28 WA * 9 |
ソースコード
def primes(n):
is_prime = [True] * (n + 1)
is_prime[0] = False
is_prime[1] = False
for i in range(2, int(n**0.5) + 1):
if not is_prime[i]:
continue
for j in range(i * 2, n + 1, i):
is_prime[j] = False
return [i for i in range(n + 1) if is_prime[i]]
pr = primes(200)
t = int(input())
for _ in range(t):
x = int(input())
ans = 10 ** 18
l = [(0, 100000)]
tmp = 1
for p in pr:
cnt = 1
t = x
while t % p == 0:
t //= p
cnt += 1
if l[-1][1] > cnt:
res = x
l.append((p, cnt))
for i in range(len(l) - 1, 0, -1):
if l[i - 1][1] >= cnt * 2:
res *= pow(l[i][0], cnt * 2 - l[i][1])
break
else:
res *= pow(l[i][0], l[i - 1][1] - l[i][1])
ans = min(ans, res)
if x % tmp > 0:
break
tmp = p
print(ans)
hir355