結果
| 問題 |
No.1730 GCD on Blackboard in yukicoder
|
| コンテスト | |
| ユーザー |
SidewaysOwl
|
| 提出日時 | 2021-11-05 23:26:51 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,151 bytes |
| コンパイル時間 | 248 ms |
| コンパイル使用メモリ | 82,968 KB |
| 実行使用メモリ | 128,516 KB |
| 最終ジャッジ日時 | 2024-11-06 14:40:06 |
| 合計ジャッジ時間 | 7,329 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | -- * 2 |
| other | TLE * 1 -- * 23 |
ソースコード
n = int(input())
inf = 10 ** 6 + 1
l = [inf] * (10 ** 6+1)
a = list(map(int,input().split()))
from collections import defaultdict
for i in range(2,int((10 ** 6) ** ( 1/2)) + 1):
if l[i] == inf:
j = i * 2
cnt = 2
while j <= 10 ** 6:
l[j] = min(i,l[j])
cnt += 1
j = i * cnt
from collections import defaultdict
def fast_prime_factorization(w):
d = defaultdict(int)
while w > 1:
div = l[w]
if div == inf:
d[w] += 1
break
while w % div == 0:
d[div] += 1
w //= div
return d
from itertools import product
d2 = defaultdict(int)
for i in range(n):
d = fast_prime_factorization(a[i])
ll = [[] for _ in range(len(d))]
for cnt,j in enumerate(d.keys()):
for k in range(d[j]+1):
ll[cnt].append(j**k)
for pro in product(*ll):
res = 1
for pp in pro:
res *= pp
# print(res)
d2[res] += 1
d3 = defaultdict(int)
for k in d2.keys():
d3[d2[k]] = max(d3[d2[k]],k)
for i in range(n):
if (n-i) in d3:
ans = d3[n-i]
print(ans)
SidewaysOwl