CF1665D.GCD Guess
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
This is an interactive problem.
There is a positive integer 1≤x≤109 that you have to guess.
In one query you can choose two positive integers a=b . As an answer to this query you will get gcd(x+a,x+b) , where gcd(n,m) is the greatest common divisor of the numbers n and m .
To guess one hidden number x you are allowed to make no more than 30 queries.
输入格式
The first line of input contains a single integer t ( 1≤t≤1000 ) denoting the number of test cases.
The integer x that you have to guess satisfies the constraints: ( 1≤x≤109 ).
输出格式
The hidden number x is fixed before the start of the interaction and does not depend on your queries.
To guess each x you can make no more than 30 queries in the following way:
- "? a b" ( 1≤a,b≤2⋅109 , a=b ).
For this query you will get gcd(x+a,x+b) .
When you know x , print a single line in the following format.
- "! x" ( 1≤x≤109 ).
After that continue to solve the next test case.
If you ask more than 30 queries for one x or make an invalid query, the interactor will terminate immediately and your program will receive verdict Wrong Answer.
After printing each query do not forget to output end of line and flush the output buffer. Otherwise, you will get the Idleness limit exceeded verdict. To do flush use:
- fflush(stdout) or cout.flush() in C++;
- System.out.flush() in Java;
- flush(output) in Pascal;
- stdout.flush() in Python;
- Read documentation for other languages.
Hacks
To use hacks, use the following format of tests:
The first line should contain a single integer t ( 1≤t≤1000 ) — the number of test cases.
The first and only line of each test case should contain a single integer x ( 1≤x≤109 ) denoting the integer x that should be guessed.
输入输出样例
输入#1
2 1 8 1
输出#1
? 1 2 ? 12 4 ! 4 ? 2000000000 1999999999 ! 1000000000
说明/提示
The first hidden number is 4 , that's why the answers for the queries are:
"? 1 2" — gcd(4+1,4+2)=gcd(5,6)=1 .
"? 12 4" — gcd(4+12,4+4)=gcd(16,8)=8 .
The second hidden number is 109 , that's why the answer for the query is:
"? 2000000000 1999999999" — gcd(3⋅109,3⋅109−1)=1 .
These queries are made only for understanding the interaction and are not enough for finding the true x .