結果
問題 |
No.1730 GCD on Blackboard in yukicoder
|
ユーザー |
![]() |
提出日時 | 2021-11-05 23:44:07 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,168 bytes |
コンパイル時間 | 274 ms |
コンパイル使用メモリ | 82,304 KB |
実行使用メモリ | 128,504 KB |
最終ジャッジ日時 | 2024-11-06 15:24:46 |
合計ジャッジ時間 | 7,227 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
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) ans = 1 for i in range(n): if (n-i) in d3: ans = max(d3[n-i],ans) print(ans)