一直没弄懂这个题目的输入输出,我的算法思路应该正确,希望大家能帮忙解决。
#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;
}