题解:P12531 [XJTUPC 2025] Beat Verdict: Precision Strike
P12531 题解
解法思路
经过观察可以得知
代码实现
#include<bits/stdc++.h>
using namespace std;
#define int long long
int ans,t,n,f[20],L,R;
signed main() {
cin >> t;
for(int i = 1 ;i <= 17; i++) f[i] = f[i - 1] * 4 + 1;
while(t--) {
cin >> n;
L = 1;R = 1;
while (f[R+1] <= n) R++;
while (L < R){
int mid = (L + R + 1) / 2;
printf("? %lld\n",f[mid]);
int x;
cin >> x;
if(x) R = mid - 1;
else L = mid;
}
printf("! %lld\n",min(f[L] * 2,n));
}
return 0;
}