結果
問題 |
No.502 階乗を計算するだけ
|
ユーザー |
![]() |
提出日時 | 2025-05-14 12:59:40 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,091 bytes |
コンパイル時間 | 139 ms |
コンパイル使用メモリ | 82,736 KB |
実行使用メモリ | 66,256 KB |
最終ジャッジ日時 | 2025-05-14 13:00:49 |
合計ジャッジ時間 | 4,470 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 32 TLE * 1 -- * 19 |
ソースコード
import sys def solve(): n = int(sys.stdin.readline()) MOD = 10**9 + 7 # n! を計算する # n! = 1 * 2 * 3 * ... * n # 定義により 0! = 1 if n == 0: print(1) return # Wilsonの定理の簡単な応用: # もし n が MOD 以上であれば、n! の因数の中に MOD が含まれる。 # MOD = 10^9 + 7 は素数である。 # よって、n >= MOD の場合、n! は MOD で割り切れる。 # したがって、n! mod MOD = 0 となる。 if n >= MOD: print(0) return # n < MOD の場合、単純に階乗を計算し、各ステップで MOD を取る。 # これにより、数値が大きくなりすぎるのを防ぐ。 result = 1 for i in range(1, n + 1): result = (result * i) % MOD # Note: If result becomes 0 at any point, it stays 0. # However, since MOD is prime and i <= n < MOD, i will never be a multiple of MOD, # and result will only be 0 if n >= MOD, which is handled above. print(result) if __name__ == "__main__": solve()