#B4436. [语言月赛 202511] 彩云曼波
[语言月赛 202511] 彩云曼波
题目背景
这是一道交互题。
题目描述
共有 个瓶子排成一列,每个瓶子有且只有一个 范围内的颜色,没有两个瓶子颜色相同。
你需要猜测瓶子的颜色顺序。你可以向交互库询问你的猜测是否正确。每次询问,你应当向标准输出输出一行 个整数,表示从左至右瓶子的颜色,然后输出一个换行并清空缓冲区。
你可以使用如下语句来清空缓冲区:
- 对于 C/C++:
fflush(stdout); - 对于 C++:
std::cout << std::flush; - 对于 Java:
System.out.flush(); - 对于 Python:
stdout.flush(); - 对于 Pascal:
flush(output); - 对于其他语言,请自行查阅对应语言的帮助文档。
特别的,对于 C++ 语言,在输出换行时如果你使用 std::endl 而不是 '\n',也可以自动刷新缓冲区。建议使用std::endl以避免忘记输出换行。
然后你需要从标准输入中输入一个整数,代表交互库返回的结果。为 则表示猜测错误,为 则表示猜测正确。
你最多询问 次。
输入格式
首先读入一个整数 。
之后,每次询问后读入一个 或 的整数。
当你读入 后,应当立即结束程序。
输出格式
每次询问,输出一行 个整数。
5
0
1
1 2 3 5 4
1 2 3 4 5
提示
对于 的测试数据,。
示例程序:
#include<bits/stdc++.h>
using namespace std;
int main() {
int n, result;
cin >> n;
// 向标准输出输出一行 n 个整数,表示从左至右瓶子的颜色
for(int i = 1; i <= n; i++) {
cout << i << ' ';
}
// 然后输出一个换行并清空缓冲区
cout << endl; fflush(stdout);
// 从标准输入中输入一个整数,代表交互库返回的结果
cin >> result;
// 当你读入 1 后,应当立即结束程序。
if(result) return 0;
for(int i = n; i >= 1; i--) {
cout << i << ' ';
}
cout << endl; fflush(stdout);
cin >> result;
if(result) return 0;
return 0;
}
京公网安备 11011102002149号