#P12989. [GCJ 2022 #1B] ASeDatAb

    ID: 12813 远端评测题 10000ms 1024MiB 尝试: 1 已通过: 1 难度: 8 上传者: 标签>2022交互题Special Judge构造Ad-hocGoogle Code Jam

[GCJ 2022 #1B] ASeDatAb

Description

一个研究联盟花费三年时间寻找最佳数据库,但仍存在问题。该数据库以 8 位二进制字符串形式存储记录值。遗憾的是,他们实现记录值设置功能的方式存在缺陷。

数据库的每条记录都是一个 8 位二进制字符串,其位索引从左到右为 0 至 7。当收到将特定记录设置为新值 VV 的指令时,数据库并不会直接将其设为 VV,而是执行以下操作:

  1. 选择一个 0 到 7 之间的整数 rr,并生成 VV 向右循环移动 rr 位后的值 WW。即 WW 的第 ((i+r)mod8)((i + r) \bmod 8) 位等于 VV 的第 ii 位。
  2. 将记录的当前值 XX 更新为 XXWW 的异或值(即新值的第 ii 位为 1 当且仅当 XXWW 的第 ii 位不同)。
  3. 最后向用户返回新值中 1 的位数。

幸运的是,无论初始值如何或数据库如何选择旋转值,总能通过不超过 300 次操作将记录值重置为全 0。请编写一个程序与数据库交互完成此任务。

交互协议

本题为交互题。

初始时,你的程序应读取一个整数 T\mathbf{T} 表示测试用例数量,随后处理 T\mathbf{T} 个测试用例。

每个测试用例开始时,数据库记录会被设为非 0000000000000000 的值。每个测试用例中,你的程序最多可进行 300 轮交互。

每轮交互流程:

  1. 你输出一个 8 位二进制字符串作为操作值 VV
  2. 评测系统执行前述操作后,返回一个整数 Ni\mathbf{N_{i}} 表示更新后记录值中 1 的位数
    • Ni=0\mathbf{N_{i}}=0 表示成功,应开始下一测试用例(或程序终止)
    • Ni=1\mathbf{N_{i}}=-1 表示第 300 次操作仍未归零,测试失败(后续用例不再处理)
    • 1Ni81 \leq \mathbf{N_{i}} \leq 8 可继续尝试

只有当所有测试用例均成功将记录值归零时,解答才被视为正确。

若检测到非法输出,评测系统将返回 -1 并终止。收到 -1 后需正常退出以避免资源错误判定。

Input Format

参见交互协议。

Output Format

参见交互协议。

1

3

0

00110011

00011001

Hint

可使用测试工具进行本地测试(需与代码并行运行)。工具说明详见其注释,注意该工具并非真实评测系统。

数据范围

  • 1T1001 \leq \mathbf{T} \leq 100
  • 1Ni8-1 \leq \mathbf{N_{i}} \leq 8

测试集 1(25 分,可见判定)

  • 初始值为均匀随机生成的非全零 8 位二进制数
  • 旋转值均为独立均匀随机选择

测试集 2(15 分,可见判定)

  • 评测系统采用对抗策略(可动态调整初始值和旋转值)
  • 保证初始值不为全零

翻译由 DeepSeek V3 完成