#codethanksfestival2017e. [code_thanks_festival_2017_e]Coin Authentication
[code_thanks_festival_2017_e]Coin Authentication
问题描述
这是一个互动问题。
海豚在城市里找到了 个袋子,每个袋子里装有 克重的硬币,数量为 枚。
然而,海豚记起城市中流通着许多假币。在这 个袋子中,可能有一些袋子只装有假币。海豚想要找出真币的袋子。
这些硬币的外观完全相同,但真币和假币的重量不同。已知真币的重量为 克或 克,假币的重量为 克、 克或 克。海豚对袋子中硬币的重量 一无所知。
海豚决定向朋友虎鲸借用一个秤来解决问题。通过秤,进行以下步骤来测量硬币的重量:
- 对于每个袋子,选取整数 。
- 从第 个袋子中取出 枚硬币,放在秤上。
- 进行测量,得到放在秤上的硬币的总重量。
- 最后,将放在秤上的硬币放回原来的袋子。
然而,虎鲸非常忙碌,所以海豚最多只能进行 次硬币测量。请确定哪些袋子中包含真币。
约束条件
- 和 都是整数
输入输出
首先,从标准输入读入一个形如以下格式的整数 :
接下来,你需要通过提问发出查询并进行硬币测量。你最多可以进行 次查询。每个查询应按以下格式输出到标准输出:
?
这里 是放在秤上的第 个袋子中硬币的数量,必须是大于等于 且小于等于 的整数。
然后,从标准输入读入查询的答案,形式如下:
这里 是一个非负整数,表示秤的测量结果为 克。
最后,你需要按以下格式输出答案:
!
这里 必须为 1
表示第 个袋子中的硬币是真币,或者为 0
表示第 个袋子中的硬币是假币。注意,答案的输出不包括查询硬币测量的次数限制。
评判
- 必须在输出末尾包含换行符,并且在此之后必须刷新标准输出。 否则可能会超时。
- 输出答案后,必须立即结束程序。否则行为未定义。
- 当输出的答案不正确时,行为未定义(可能不是
WA
)。
示例
本示例中,, , , , , ,答案为 0 1 0 1 0
。
输入:
5
输出:
? 1 0 0 0 0
8
? 0 1 0 0 0
9
? 0 0 1 0 0
10
? 0 0 0 1 0
11
? 0 0 0 0 1
12
! 0 1 0 1 0