题解:P11145 Strange Homura Game
Problem Link
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
!