結果
問題 |
No.8123 Calculated N !
|
ユーザー |
|
提出日時 | 2025-03-29 00:22:11 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,270 ms / 2,000 ms |
コード長 | 455 bytes |
コンパイル時間 | 361 ms |
コンパイル使用メモリ | 82,372 KB |
実行使用メモリ | 113,716 KB |
最終ジャッジ日時 | 2025-04-01 20:50:32 |
合計ジャッジ時間 | 14,631 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 6 |
other | AC * 16 |
ソースコード
import math N = int(input()) sqrtN = math.isqrt(N) Q = [N // i for i in range(1, sqrtN + 1)] Q += list(range(Q[-1] - 1, 0, -1)) S = {i: i - 1 for i in Q} for x in range(2, sqrtN + 1): if S[x] > S[x - 1]: for n in Q: if n < x * x: break S[n] -= S[n // x] - S[x - 1] MOD = 1000000007 ans = 1 Q.reverse() for i in range(1, len(Q)): v, x = 1, N while x > 0: x //= Q[i] v += x ans = ans * pow(v, S[Q[i]] - S[Q[i - 1]], MOD) % MOD print(ans)