#B. VladmirZ的签到题

    交互题 1000ms 256MiB

VladmirZ的签到题

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

这是一道交互题

关于如何作答交互题,请参阅 Interactive Problems: Guide for Participants - Codeforces

题目背景

随着 CCNUACM 协会的现代化建设进入新时代,N405 面临的主要矛盾已经转化为成员日益增长的工位需要和 N405 脏乱差的工作环境之间的矛盾。只有正确认识这一主要矛盾,才能确定正确的战略、策略、政策和办法,促进矛盾解决,推动 CCNUACM 协会进步。

必须认识到, CCNUACM 主要矛盾的变化,是关系全局的历史性变化,对协会工作提出了许多新要求。在新任会长 wang_by 的带领下, CCNUACM 协会的同学们勇于担当,攻坚克难,发动了 N405 全面扫除大会战。

题目描述

N405 的工位中,有的已经有主,有的因为(前主人毕业\杂物堆积\正对空调)等原因暂无人使用。为了进行扫除,你需要确定 N405 的工位中哪些有人占用,哪些没有人占用,并清扫那些无人使用的工位。

你并不了解工位的占用情况。好消息是,N405 的红太阳 wang_by 会长全都知道。显然的,他很忙,因此你不能问他太多问题。

你可以向会长大人进行若干次询问:

  • 会长大人首先告诉你一个数 nn,表示 N405nn 个工位。
  • 每次询问时,你应当给出一个只包含 0,10, 1 两种字符的,长度为 nn 的字符串。这代表了你对占用情况的猜测:如果第 ii 位被占用了,请输出 11,否则输出 00
  • 每次询问后,会长大人会返回给你一个数 xx,表示你猜测被占用的工位中,真正被占用的工位的数量。

你需要找出全部工位的真实占用情况。

交互协议

在交互开始时从标准输入流中读入整数 nn

要进行查询,请输出 ? s,其中 s 是你要查询的字符串。随后,从标准输入流中读入一个数 xx,即本次查询的结果。

特别的,如果您收到的不是答案,而是整数 1-1 ,则表示您的程序进行了无效查询、超出了查询次数限制,或给出了错误答案。您的程序必须立即终止,才能收到 Wrong Answer 判决。否则,您可能会得到一个任意判决(保证不是Accepted),因为您的程序将继续从一个封闭的数据流中读取数据。

要做出最终回答,请输出 ! s,其中 s 是你的答案字符串。做出回答不计入交互次数。请确保你输出答案后正常退出程序,而不应继续进行交互。

输出查询后,不要忘记输出行尾并刷新输出。否则会出现超过闲置限制 (Idleness Limit Excceed) 的情况。为此,请使用:

  • C++ 中使用 fflush(stdout) 或 cout.flush();
  • Java 中的 System.out.flush();
  • Python 中的 stdout.flush();
  • 其他语言请参考相关文档。

友善的 neurotic 提醒你:取消同步流解绑并使用 std::endl 换行即可。

样例

5

1

3

3
? 10101

? 11111

? 11110

! 11010

限制

保证工位数 1n1041 \leq n \leq 10^4

你不能进行超过 n+1n + 1 次询问。

2024暑期集训第三周周赛

未参加
状态
已结束
规则
ACM/ICPC
题目
7
开始于
2024-7-20 14:00
结束于
2024-7-20 18:00
持续时间
4 小时
主持人
参赛人数
43