結果
問題 | No.2497 GCD of LCMs |
ユーザー |
![]() |
提出日時 | 2023-10-06 23:50:25 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 402 ms / 2,000 ms |
コード長 | 1,598 bytes |
コンパイル時間 | 174 ms |
コンパイル使用メモリ | 81,856 KB |
実行使用メモリ | 84,564 KB |
最終ジャッジ日時 | 2024-07-26 17:23:19 |
合計ジャッジ時間 | 3,919 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 14 |
ソースコード
#############################################################import syssys.setrecursionlimit(10**7)from heapq import heappop,heappushfrom collections import deque,defaultdict,Counterfrom bisect import bisect_left, bisect_rightfrom itertools import product,combinations,permutationsipt = sys.stdin.readlinedef iin():return int(ipt())def lmin():return list(map(int,ipt().split()))def prime_factorize(n):d = defaultdict(int)while n % 2 == 0:d[2] += 1n //= 2f = 3while f * f <= n:if n % f == 0:d[f] += 1n //= felse:f += 2if n != 1:d[n] += 1return dMOD = 998244353#############################################################N,M = lmin()A = lmin()D = [prime_factorize(a) for a in A]S = set()for d in D:for k in d.keys():S.add(k)G = [[] for _ in range(N)]for _ in range(M):u,v = lmin()u,v = u-1,v-1G[u].append(v)G[v].append(u)cost = defaultdict(list)for s in S:tmp_cost = [MOD]*Ntmp_cost[0] = D[0][s]hq = [(tmp_cost[0],0)]while hq:c1,cur = heappop(hq)if tmp_cost[cur] < c1:continuetmp_cost[cur] = c1for nxt in G[cur]:c2 = D[nxt][s]v = max(c1,c2)if v < tmp_cost[nxt]:tmp_cost[nxt] = vheappush(hq,(v,nxt))cost[s] = tmp_cost#print(cost)for i in range(N):ans = 1for s in S:ans *= pow(s,cost[s][i],MOD)ans %= MODprint(ans)