結果
| 問題 | No.3448 ABBBBBBBBC |
| コンテスト | |
| ユーザー |
1521a
|
| 提出日時 | 2026-03-02 19:11:08 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
AC
|
| 実行時間 | 122 ms / 2,000 ms |
| コード長 | 2,113 bytes |
| 記録 | |
| コンパイル時間 | 255 ms |
| コンパイル使用メモリ | 85,740 KB |
| 実行使用メモリ | 114,324 KB |
| 最終ジャッジ日時 | 2026-03-02 19:11:10 |
| 合計ジャッジ時間 | 2,147 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 4 |
ソースコード
import sys
# 预处理每个 (a, b) 对应的左、右 c 列表
def precompute():
left_dict = {}
right_dict = {}
for a in range(1, 10):
for b in range(10):
if b == a:
continue
left = []
right = []
for c in range(10):
if c == a or c == b:
continue
if c < b:
left.append(c)
elif c > b:
right.append(c)
left.sort()
right.sort()
left_dict[(a, b)] = left
right_dict[(a, b)] = right
return left_dict, right_dict
def solve() -> None:
data = sys.stdin.read().strip().split()
if not data:
return
it = iter(data)
T = int(next(it))
left_dict, right_dict = precompute()
out = []
for _ in range(T):
N = int(next(it))
K = int(next(it))
total_per_a = 72 * N
a = (K - 1) // total_per_a + 1
k_in_a = K - (a - 1) * total_per_a
per_b = 8 * N
r = (k_in_a - 1) // per_b + 1 # b 在 a 组内的序号 (1‑based)
if r <= a:
b = r - 1
else:
b = r
k_in_ab = k_in_a - (r - 1) * per_b # 在当前 (a,b) 组内的序号
left = left_dict[(a, b)]
right = right_dict[(a, b)]
L = len(left)
R = len(right) # L + R = 8 恒成立
if k_in_ab <= L * N: # 落在左半部分 (c < b)
t = (k_in_ab - 1) // L
m = t # m 从 0 开始
idx = (k_in_ab - 1) % L
c = left[idx]
else: # 落在右半部分 (c > b)
k2 = k_in_ab - L * N
t = (k2 - 1) // R
m = N - 1 - t # m 从大到小
idx = (k2 - 1) % R
c = right[idx]
length = m + 3
out.append(f"{length} {a} {b} {c}")
sys.stdout.write("\n".join(out))
if __name__ == "__main__":
solve()
1521a