結果
問題 | No.2264 Gear Coloring |
ユーザー |
![]() |
提出日時 | 2023-05-25 02:42:16 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 496 ms / 2,000 ms |
コード長 | 1,168 bytes |
コンパイル時間 | 227 ms |
コンパイル使用メモリ | 82,348 KB |
実行使用メモリ | 68,564 KB |
最終ジャッジ日時 | 2024-12-24 01:06:06 |
合計ジャッジ時間 | 3,335 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 18 |
ソースコード
import sysreadline=sys.stdin.readlineimport mathfrom collections import defaultdictdef Divisors(N):divisors=[]for i in range(1,N+1):if i**2>=N:breakelif N%i==0:divisors.append(i)if i**2==N:divisors+=[i]+[N//i for i in divisors[::-1]]else:divisors+=[N//i for i in divisors[::-1]]return divisorsdef Factorize(N):assert N>=1factors=defaultdict(int)for p in range(2,N):if p**2>N:breakwhile N%p==0:factors[p]+=1N//=pif N!=1:factors[N]+=1return factorsdef LCM(n,m):if n or m:return abs(n)*abs(m)//math.gcd(n,m)return 0N,M=map(int,readline().split())A=list(map(int,readline().split()))mod=998244353L=1for a in A:L=LCM(L,a)D=Divisors(L)cnt=defaultdict(int)for d in D:cnt[d]=L//dfor p in Factorize(L):for d in D:if d%p==0:cnt[d//p]-=cnt[d]ans=0for d,c in cnt.items():p=1for a in A:g=math.gcd(a,d)p*=pow(M,g,mod)p%=modans+=p*cans%=modans*=pow(L,mod-2,mod)ans%=modprint(ans)