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