跳到主要内容

交互题

提示

交互题近年来没有在省选以下的比赛中出现。

参考资料

例题

洛谷 P1733 猜数(IO交互版)

评测机会在区间 [1,109][1,10^9] 中选择一个整数,你应该写一个代码来猜测它。你最多可以问评测机 5050 个问题。

对于每一次询问,你可以向评测机询问区间 [1,109][1,10^9] 中的一个整数,评测机会返回:

  • 0:如果它为答案(即评测机所选的数字),且程序应该在此之后停止询问。
  • -1:如果它小于答案。
  • 1:如果它大于答案。
#include <bits/stdc++.h>
using namespace std;

const int L=1;
const int R=1000000000;
int main()
{
int l=L,r=R+1;
while(l<r)
{
int mid=l+r>>1;
cout<<mid<<'\n'<<flush;
int t;
cin>>t;
if(t==0)break;
else if(t==1)r=mid;
else if(t==-1)l=mid+1;
}
return 0;
}