关于缓冲区
查看原帖
关于缓冲区
937859
Guagua111楼主2024/9/16 16:38

这道题我如果

#include <iostream>
using namespace std;

int main() {
	int l = 1, r = 1e9;
	while (l <= r) {
		int mid = (l + r) / 2, op;
		cout << mid << flush; //刷新缓冲区
		cin >> op;
		if (op == 0) {
			return 0;
		}
		if (op == -1) {
			l = mid + 1;
		} else {
			r = mid - 1;
		}
	}
	return 0;
}

就会 T

然而如果

#include <iostream>
using namespace std;

int main() {
	int l = 1, r = 1e9;
	while (l <= r) {
		int mid = (l + r) / 2, op;
		cout << mid << endl; //刷新缓冲区
		cin >> op;
		if (op == 0) {
			return 0;
		}
		if (op == -1) {
			l = mid + 1;
		} else {
			r = mid - 1;
		}
	}
	return 0;
}

就 AC 了。

为什么呢?

2024/9/16 16:38
加载中...