結果
問題 |
No.1396 Giri
|
ユーザー |
![]() |
提出日時 | 2021-02-15 05:28:12 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 569 ms / 2,000 ms |
コード長 | 828 bytes |
コンパイル時間 | 341 ms |
コンパイル使用メモリ | 82,480 KB |
実行使用メモリ | 96,416 KB |
最終ジャッジ日時 | 2024-07-22 17:38:47 |
合計ジャッジ時間 | 6,900 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 23 |
ソースコード
n=int(input()) from math import gcd def lcd(a,b): return (a*b)//gcd(a,b)%mod mod=998244353 ########### prime_num=n ########### min_prime=[-1]*(prime_num+1) #2以上の自然数に対して最小の素因数を表す min_prime[0]=0 min_prime[1]=1 i=2 prime=[] while i<=prime_num: if min_prime[i]==-1: min_prime[i]=i prime.append(i) for j in prime: if i*j>prime_num or j>min_prime[i]:break min_prime[j*i]=j i+=1 maxp=prime[-1] alls={} for x in range(1,n+1): if x==maxp:continue s={} y=x while y>1: p=min_prime[y] if p in s:s[p]+=1 else:s[p]=1 y//=p for key in s: if key in alls:alls[key]=max(alls[key],s[key]) else:alls[key]=s[key] ans=1 for p in alls: ans*=pow(p,alls[p],mod) ans%=mod print(ans)