A – Grid game
竖的横的上下分开填。
// CF1103A.cpp
#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 1e5 + 200;
int n, ux, uy, dx, dy;
char str[MAX_N];
int main()
{
scanf("%s", str + 1), n = strlen(str + 1);
ux = 1, uy = 1, dx = 0, dy = 1;
for (int i = 1; i <= n; i++)
if (str[i] == '0')
printf("%d %d\n", ux, uy), uy = uy % 4 + 1;
else
printf("%d %d\n", (dx >> 1) + 3, dy), dx = (dx + 1) % 4, dy = (dy + 1) % 4 + 1;
return 0;
}
B – Game with modulo
一共有 60 次询问机会,我们可以分两个 30 次:第一个 30 次用来询问最高位前的一位,第二个 30 位用来补全我们对 \(a – 1\) 的猜测。