cf1104d二分+数学
Posted zsben991126
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cf1104d二分+数学相关的知识,希望对你有一定的参考价值。
#include<bits/stdc++.h> using namespace std; bool ask(int x,int y){ printf("? %d %d ",x,y); fflush(stdout); char buf[4]; scanf("%s",buf); return buf[0]==‘x‘; } int work(){ if(ask(0,1))return 1; int l=1,r,ans,mid; while(ask(l*2,l))l*=2; r=l*2+1,r=min(r,1000000000); while(l<=r){ mid=l+r>>1; if(ask(mid,(mid+1)/2))//mid小于猜的数 l=mid+1; else ans=mid,r=mid-1; } return ans; } int main(){ char cmd[32]; while(1){ scanf("%s",cmd); if(strcmp(cmd,"start")==0){ printf("! %d ",work()); fflush(stdout); } else break; } }
以上是关于cf1104d二分+数学的主要内容,如果未能解决你的问题,请参考以下文章