#3716. 猜三位数
猜三位数
题目描述
这是一道交互题
33DAI 想好了一个三位数 ,保证 的三个数位上的数字各不相同。你有最多 次机会来猜这个数。
你需要写一个程序和 33DAI 的交互程序通过输入输出互动。每次你输出完你猜测的结果后,都可以通过输入得到 33DAI 的反馈。33DAI 的反馈是三个数字,每个都是 中的一个。分别表示那个位置上你的输出和 的匹配情况。
0
:表示 这个位置上的这个数字在 中没有出现过。1
:表示 这个位置上的这个数字在 中出现过,但不是这个位置出现的。2
:表示 这个位置上的数字和 这个位置上的数字一样。
当 33DAI 给你反馈 时,你应该结束你的程序。
交互题注意事项
请在每次输出之后刷新缓冲区,对于使用 cin/cout
的同学,可以使用 cout.flush();
的方式刷新缓冲区。对于使用 scanf/printf
的同学,可以使用 fflush(stdout);
的方式刷新缓冲区。下面是一个能拿到本题 分的样例程序。
#include <bits/stdc++.h>
using namespace std;
int main()
{
char x, y, z;
for (int i = 100; i <= 999; i++)
{
cout << i << "\n";
cout.flush();
cin >> x >> y >> z;
if (x == '2' && y == '2' && z == '2')
{
break;
}
}
return 0;
}
交互格式
参考上面的 分代码,不停输出你猜的数字,直到 33DAI 给你反馈 222
即可。你要做的就是想想怎么降低你的猜测次数。
数据规模与约定
对于 的数据,。保证 的三个数位上的数字各不相同。
- 子任务 1(30 分):保证 。即最多猜 次。
- 子任务 2(30 分):保证 。即最多猜 次。
- 子任务 3(40 分):保证 。即最多猜 次。