結果
| 問題 | No.3740 Troublesome Congestion |
| コンテスト | |
| ユーザー |
👑 |
| 提出日時 | 2026-07-09 02:25:02 |
| 言語 | Python3 (3.14.7 + numpy 2.5.2 + scipy 1.18.0 + ACL) |
| 結果 |
WA
不安定
|
| 実行時間 | - |
| コード長 | 3,064 bytes |
| 記録 | |
| コンパイル時間 | 66 ms |
| コンパイル使用メモリ | 15,232 KB |
| 実行使用メモリ | 11,136 KB |
| 最終ジャッジ日時 | 2026-09-19 12:32:09 |
| 合計ジャッジ時間 | 2,393 ms |
|
ジャッジサーバーID (参考情報) |
judge3_0 / judge2_1 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| 部分点1 | 20 % | WA * 7 |
| 部分点2 | 30 % | WA * 12 |
| 満点 | 50 % | WA * 26 |
| 合計 | 4 * 0% = 0 点 |
ソースコード
import sys
def solve():
M = int(sys.stdin.readline())
N = 50
# Fibonacci:
# F[1] = 1, F[2] = 1, F[3] = 2, ...
# We use F[2]..F[87].
F = [0] * 90
F[1] = 1
F[2] = 1
for i in range(3, 90):
F[i] = F[i - 1] + F[i - 2]
# Zeckendorf representation using F[2], F[3], ...
terms = []
rem = M
for t in range(87, 1, -1):
if F[t] <= rem:
terms.append(t)
rem -= F[t]
assert rem == 0
G = [['#'] * N for _ in range(N)]
# ------------------------------------------------------------
# 1. Fibonacci prefix band
#
# Open cells satisfying 0 <= row - col <= 3.
#
# In this band:
# paths to (i, i) = F[2i - 1]
# paths to (i + 2, i-1) = F[2i]
#
# We only open the necessary finite part.
# ------------------------------------------------------------
for r in range(46): # 0..45
for c in range(45): # 0..44
if 0 <= r - c <= 3:
G[r][c] = '.'
# ------------------------------------------------------------
# 2. Upper collector
#
# Odd Fibonacci term F[2i-1] uses switch at:
# (i, i+1)
#
# After pressing it, the successful route goes right into:
# U_i = (i, i+2)
#
# Then all U_i are connected by a one-way staircase:
# U_i -> (i, i+3) -> U_{i+1}
# ------------------------------------------------------------
for i in range(1, 44): # i = 1..43
G[i][i + 2] = '.' # U_i
G[i][i + 3] = '.' # horizontal step
G[i + 1][i + 3] = '.' # U_{i+1}
# Terminal part from U_44 = (44, 46)
G[44][46] = '.'
for c in range(47, 50):
G[44][c] = '.'
for r in range(45, 50):
G[r][49] = '.'
# ------------------------------------------------------------
# 3. Lower collector
#
# Even Fibonacci term F[2i] uses switch at:
# (i+3, i-1)
#
# After pressing it, the successful route goes down into:
# L_i = (i+4, i-1)
#
# Then all L_i are connected by a one-way staircase:
# L_i -> (i+5, i-1) -> L_{i+1}
# ------------------------------------------------------------
for i in range(1, 43): # i = 1..42
G[i + 4][i - 1] = '.' # L_i
G[i + 5][i - 1] = '.' # vertical step
G[i + 5][i] = '.' # L_{i+1}
# Terminal part from L_43 = (47, 42)
G[47][42] = '.'
G[48][42] = '.'
for c in range(42, 50):
G[49][c] = '.'
# ------------------------------------------------------------
# 4. Place switches corresponding to Zeckendorf terms
# ------------------------------------------------------------
for t in terms:
if t % 2 == 1:
# t = 2i - 1
i = (t + 1) // 2
G[i][i + 1] = 'P'
else:
# t = 2i
i = t // 2
G[i + 3][i - 1] = 'P'
G[0][0] = '.'
G[49][49] = '.'
print(N)
print('\n'.join(''.join(row) for row in G))
if __name__ == "__main__":
solve()