結果
| 問題 |
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)