結果
問題 |
No.2137 Stairs of Permutation
|
ユーザー |
![]() |
提出日時 | 2025-04-16 01:04:33 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,295 ms / 2,000 ms |
コード長 | 957 bytes |
コンパイル時間 | 221 ms |
コンパイル使用メモリ | 82,192 KB |
実行使用メモリ | 138,400 KB |
最終ジャッジ日時 | 2025-04-16 01:06:53 |
合計ジャッジ時間 | 16,436 ms |
ジャッジサーバーID (参考情報) |
judge2 / 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)