Strange Homura Game
题意
让你猜测一个数 \(n\),你只能输出两次,每次输出一个数 \(x\),返回 \(x \bmod n\)。
Solution
令输入的数为 \(A,B\),输出的数为 \(a,b\),答案为 \(n\)。
一开始想的是 CRT
,但只能询问 \(2\) 次。
发现输入的值是经过 \(\bmod n\) 的,已知 \((A-a) \bmod n == 0\),所以 \((A-a-1) \bmod n = n-1\)。
那就非常简单了,\(B = A-a-1,n=b+1\)。
Code
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll A = 100000000000000000, a, B, b, n;
int main()
{
int _;
cin >> _;
while(_--)
{
cout << "? " << A << endl;
cin >> a; B = A-a-1;
cout << "? " << B << endl;
cin >> b; n = b+1;
cout << "! " << n << endl;
}
return 0;
}
Tips
记得开 long long
!