結果
問題 |
No.3250 最小公倍数
|
ユーザー |
|
提出日時 | 2025-08-29 23:17:31 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 746 bytes |
コンパイル時間 | 312 ms |
コンパイル使用メモリ | 82,660 KB |
実行使用メモリ | 304,072 KB |
最終ジャッジ日時 | 2025-08-29 23:18:02 |
合計ジャッジ時間 | 24,936 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 17 TLE * 2 -- * 2 |
ソースコード
(n,),a,*e=[[*map(int,s.split())]for s in open(0)] M=998244353 def pf(n): a,f={},2 while f*f<=n: if n%f:f+=1 else:a[f]=a.get(f,0)+1;n//=f if n>1:a[n]=a.get(n,0)+1 return a g=[[]for _ in range(n)] for u,v in e: g[u-1]+=v-1, g[v-1]+=u-1, q=[(0,-1,0)] l=[pf(i)for i in a] ans=[1]*n while q: p,z,s=q.pop() if s: r=0 for k,v in l[p].items(): ans[p]*=pow(k,v,M) ans[p]%=M if len(l[z])<len(l[p]): r=1 z,p=p,z for k,v in l[p].items(): if k in l[z]: l[z][k]=max(l[z][k],v) else: l[z][k]=v if r: l[p],l[z]=l[z],l[p] continue for v in g[p]: if v!=z: q+=(v,p,1),(v,p,0), for k,v in l[0].items(): ans[0]*=pow(k,v,M) ans[0]%=M print(*ans,sep='\n')