该题的输入输出该怎么处理?
查看原帖
该题的输入输出该怎么处理?
1706047
xy7777楼主2025/5/19 22:20

一直没弄懂这个题目的输入输出,我的算法思路应该正确,希望大家能帮忙解决。

#include<bits/stdc++.h>
using namespace std;
vector<int>a(17, 1);
void solve() {
	int n; cin >> n;
	if (n == 1) {
		cout << "! 1" << endl;
		cout.flush();
		return;
	}
	int l, r;
	l = 1, r = 16;
	int middle;
	int point;
	for (int i = 1; i <= 4; i++) {
		middle = (l + r) >> 1;
		cout << "? " << a[middle] << endl;
		cout.flush();
		cin >> point;
		if (point)r = middle - 1;
		else l = middle;
	}
	cout << "! " << a[middle] << endl;
	cout.flush();
}
int main()
{
	for (int i = 2; i <= 16; i++) {
		a[i] = 4 * a[i-1] + 1;
	}
	int t; cin >> t;
	for (int i = 1; i <= t; i++) {
		solve();
	}
	return 0;
}
2025/5/19 22:20
加载中...