結果
| 問題 | No.3777 Train Seats |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-10-23 22:21:00 |
| 言語 | PyPy3 (8.0.0 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 233 ms / 2,000 ms |
| + 422µs | |
| コード長 | 730 bytes |
| 記録 | |
| コンパイル時間 | 90 ms |
| コンパイル使用メモリ | 64,452 KB |
| 実行使用メモリ | 129,724 KB |
| 最終ジャッジ日時 | 2026-10-23 22:21:08 |
| 合計ジャッジ時間 | 7,915 ms |
|
ジャッジサーバーID (参考情報) |
judge6_0 / judge1_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 50 |
ソースコード
n = int(input())
MOD = 998244353
# 直前の連続個数が0,1,2
dp0 = [[0] * (n + 1) for _ in range(n + 1)]
dp1 = [[0] * (n + 1) for _ in range(n + 1)]
dp2 = [[0] * (n + 1) for _ in range(n + 1)]
dp1[0][0] = 1
for i in range(n):
for j in range(n):
# 0 -> 必ず1
# 1 -> 0か2
# 2 -> 必ず0
dp1[i + 1][j] += dp0[i][j]
dp0[i + 1][j + 1] += dp1[i][j]
dp2[i + 1][j] += dp1[i][j]
dp0[i + 1][j + 1] += dp2[i][j]
f = [1]
for i in range(1, n + 1):
f.append((f[-1] * i) % MOD)
ans = 0
for j in range(n + 1):
# j! (n-j)!
x = dp0[n][j]
y = dp1[n][j]
t = f[j] * f[n - j]
t %= MOD
ans += x * t
ans += y * t
ans %= MOD
print(ans)