結果
| 問題 |
No.2137 Stairs of Permutation
|
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-04-16 01:02:24 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 1,262 ms / 2,000 ms |
| コード長 | 957 bytes |
| コンパイル時間 | 288 ms |
| コンパイル使用メモリ | 81,704 KB |
| 実行使用メモリ | 137,404 KB |
| 最終ジャッジ日時 | 2025-04-16 01:04:22 |
| 合計ジャッジ時間 | 15,105 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 23 |
ソースコード
MOD = 998244353
N = int(input())
if N == 0:
print(0)
exit()
# Initialize variables to compute H, S2, S3, and factorial
H = 0
S2 = 0
S3 = 0
factorial = 1
# Compute inverses on the fly and accumulate sums
inv = [0] * (N + 1)
inv[1] = 1
H = (H + inv[1]) % MOD
s = inv[1] * inv[1] % MOD
S2 = (S2 + s) % MOD
s3 = s * inv[1] % MOD
S3 = (S3 + s3) % MOD
for i in range(2, N + 1):
inv[i] = MOD - (MOD // i) * inv[MOD % i] % MOD
H = (H + inv[i]) % MOD
s = inv[i] * inv[i] % MOD
S2 = (S2 + s) % MOD
s3 = s * inv[i] % MOD
S3 = (S3 + s3) % MOD
factorial = factorial * i % MOD
# Compute the terms for T
term1 = pow(H, 3, MOD)
term2 = 3 * pow(H, 2, MOD) % MOD
term3 = H % MOD
term4_part = (1 + H) % MOD
term4 = (3 * S2) % MOD
term4 = term4 * term4_part % MOD
term4 = (-term4) % MOD
term5 = (2 * S3) % MOD
T = (term1 + term2 + term3 + term4 + term5) % MOD
# Calculate the final answer
answer = (factorial * T) % MOD
print(answer)
lam6er