zoukankan      html  css  js  c++  java
  • Codeforces 1103B Game with modulo(交互题)

    题目链接:https://codeforces.com/problemset/problem/1103/B

    题目大意:求a的值。你可以问机器两个数x和y,当x%a>=y%a时返回x,否则返回y。最多可问60次。

    解题思路:

    从[0,1],[1,2],[2,4]开始枚举x和y,使y总是为x的两倍。如果a>y,返回的就是y,否则说明a在区间[x,y]之间。

    然后二分区间[x,y],如果询问(mid,y)返回x,说明a在[x,mid];否则,a在[mid,y]。

    当x+1==y时,y就是答案。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 char ask(int x,int y)
     5 {
     6     char t;
     7     printf("? %d %d
    ",x,y);
     8     fflush(stdout);
     9     cin>>t;
    10     return t;
    11 }
    12 int main()
    13 {
    14     string s;
    15     while(cin>>s){
    16         if(s=="end") break;
    17         int l=0,r=1;
    18         while(ask(l,r)=='y')
    19         {
    20             l=r;
    21             r*=2;
    22         }
    23         while(l+1<r)
    24         {
    25             int mid=(l+r)/2;
    26             if(ask(mid,r)=='x')
    27                 l=mid;
    28             else r=mid;
    29         }
    30         printf("! %d
    ",r);
    31         fflush(stdout);
    32     }
    33     return 0;
    34 }
    View Code
  • 相关阅读:
    webpack浅析
    MongoDB简易
    async函数
    react -- context
    抓包移动端方法
    stateless 无状态组件
    移动端适配
    JS和JQuery获取和修改Label的值的示例代码
    HTML DOM querySelector() 方法
    filter
  • 原文地址:https://www.cnblogs.com/cph2427526189/p/10308429.html
Copyright © 2011-2022 走看看