結果
問題 | No.1396 Giri |
ユーザー |
|
提出日時 | 2025-01-01 15:19:19 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 614 ms / 2,000 ms |
コード長 | 1,131 bytes |
コンパイル時間 | 539 ms |
コンパイル使用メモリ | 82,432 KB |
実行使用メモリ | 96,112 KB |
最終ジャッジ日時 | 2025-01-01 15:19:27 |
合計ジャッジ時間 | 7,010 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 23 |
ソースコード
## https://yukicoder.me/problems/no/1396MOD = 998244353def main():N = int(input())# osa-k法による素因数分解primes = [i for i in range(N + 1)]for p in range(2, N + 1):if p != primes[p]:continuex = 2 * pwhile x <= N:if x == primes[x]:primes[x] = px += p# N個全ての最小k公倍数を計算base_value = {}for a in range(2, N + 1):primes_map = {}while a > 1:p = primes[a]if p not in primes_map:primes_map[p] = 0a //= pprimes_map[p] += 1for p, cnt in primes_map.items():if p not in base_value:base_value[p] = cntelse:base_value[p] = max(base_value[p], cnt)max_p = max(base_value.keys())answer = 1for p, cnt in base_value.items():answer *= pow(p, cnt, MOD)answer %= MODanswer *= pow(max_p, MOD - 2, MOD)answer %= MODprint(answer)if __name__ == "__main__":main()