CF1103B Game with modulo
题目大意
未知一个数 ,让你每次猜两个数 和 ,若 返回 x
,否则返回 y
。
让你猜测次数少于 次的时候猜出数 。
解题思路
我们可以先二分猜一个 ,如果 , 那么我们就能确定 。
找到 的范围后,可以再来一个二分求出 。
具体见代码。
CODE
#include <bits/stdc++.h>
#define int long long
using namespace std;
string s;
int len;
signed main()
{
cin >> s;
while (s.size() != 3 && s.size() != 7)
{
int l = 0, r = 1;
do
{
printf("? %lld %lld\n", l, r);
cin >> s;
if (s[0] == 'y')
{
l = r;
r <<= 1;
}
} while (s[0] == 'y');
while (l + 1 < r)
{
int mid = (l + r) >> 1;
printf("? %lld %lld\n", mid, l);
cin >> s;
if (s[0] == 'x')
l = mid;
else
r = mid;
}
printf("! %lld\n", l + 1);
cin >> s;
}
return 0;
}
本文来自博客园,作者:蒟蒻orz,转载请注明原文链接:https://www.cnblogs.com/orzz/p/18122081