题意:
有个数x,要询问出来,每次回答或大或小,x是不超过m的正整数,询问不超过60次,且它的回答可能错可能对,但有一个周期n,即不同周期同一位置的回答真假相同。
分析:
额,其实观察一下数据范围就发现。。。其实这不就是交互题的板子么。。。60次询问,n最大才30,那干脆问30次1,根据答案确定该位置是真是假。再用30次回答答案。
然而。。。惨遭hack。。。
记得。。。后面询问的时候,编号要mod n。。。。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#define SF scanf
#define PF printf
#define MAXN 100010
using namespace std;
int n,k,m,x;
int a[MAXN];
int main(){SF("%d%d",&m,&n);for(int i=1;i<=n;i++){PF("1\n");fflush(stdout);SF("%d",&a[i]);}int l=2,r=m,now=1;;while(l<=r){int mid=(l+r)>>1;PF("%d\n",mid);fflush(stdout);SF("%d",&x);x*=a[(now-1)%n+1];now++;if(x<0)r=mid-1;elsel=mid+1;}
}