結果
| 問題 | No.1396 Giri |
| コンテスト | |
| ユーザー |
koheijkt
|
| 提出日時 | 2026-02-25 21:18:05 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,250 bytes |
| 記録 | |
| コンパイル時間 | 572 ms |
| コンパイル使用メモリ | 77,728 KB |
| 実行使用メモリ | 155,340 KB |
| 最終ジャッジ日時 | 2026-02-25 21:18:12 |
| 合計ジャッジ時間 | 6,197 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 TLE * 1 |
| other | -- * 23 |
ソースコード
INF = 1e18
MOD = 998244353
from collections import Counter, defaultdict
from bisect import bisect_left, bisect_right
def num_ika(li, x): # x 以下の最大値(なければ -inf)
res = bisect_right(li, x) - 1
return -INF if res == -1 else li[res]
N = int(input())
limit = 10**6
distinct_prime_factor_count = [0]*(limit+1)
primes = []
for i in range(2, limit+1):
if distinct_prime_factor_count[i] == 0:
primes.append(i)
for num in range(i, limit+1, i):
distinct_prime_factor_count[num] += 1
# primes の中の N 以下の最大値
target = num_ika(primes, N)
#data = [list() for _ in range(limit + 1)]
data = [defaultdict(int) for _ in range(limit + 1)]
for prime in primes:
n = prime
while n <= N:
# n おきに加算
for i in range(n, N + 1, n):
data[i][prime] += 1
n *= prime
# LCM のパーツ
dd = defaultdict(int)
for i in range(N, 1, -1):
if i != target:
for k, v in data[i].items():
if k not in dd:
dd[k] = v
else:
vtmp = dd[k]
if vtmp < v: # 更新
dd[k] = v
ans = 1
for k, v in dd.items():
ans *= pow(k, v, MOD)
ans %= MOD
print(ans)
koheijkt