結果
| 問題 |
No.500 階乗電卓
|
| コンテスト | |
| ユーザー |
gew1fw
|
| 提出日時 | 2025-06-12 16:22:05 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 892 bytes |
| コンパイル時間 | 442 ms |
| コンパイル使用メモリ | 82,120 KB |
| 実行使用メモリ | 53,908 KB |
| 最終ジャッジ日時 | 2025-06-12 16:22:24 |
| 合計ジャッジ時間 | 1,972 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 18 WA * 2 |
ソースコード
def compute_trailing_zeros(n):
count = 0
while n >= 5:
n //= 5
count += n
return count
def main():
import sys
MOD = 10**12
N = int(sys.stdin.readline())
z = compute_trailing_zeros(N)
if z >= 12:
print("000000000000")
return
product = 1
count_2 = 0
count_5 = 0
for i in range(1, N+1):
num = i
while num % 2 == 0:
num //= 2
count_2 += 1
while num % 5 == 0:
num //= 5
count_5 += 1
product = (product * num) % MOD
excess_2 = count_2 - count_5
pow_2 = pow(2, excess_2, MOD)
product = (product * pow_2) % MOD
pow_10_z = pow(10, z, MOD)
result = (product * pow_10_z) % MOD
if result == 0:
print("000000000000")
else:
print(result)
if __name__ == "__main__":
main()
gew1fw