結果
| 問題 |
No.502 階乗を計算するだけ
|
| コンテスト | |
| ユーザー |
qwewe
|
| 提出日時 | 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()
qwewe