305771: CF1088D. Ehab and another another xor problem
Memory Limit:256 MB
Time Limit:1 S
Judge Style:Text Compare
Creator:
Submit:0
Solved:0
Description
Ehab and another another xor problem
题意翻译
交互题,系统有两个整数 $(a,b)$,你每次可以询问一组整数 $(c,d)$,系统会回答: - $1$ 如果 $a\oplus c>b\oplus d$ - $0$ 如果 $a\oplus c=b\oplus d$ - $-1$ 如果 $a\oplus c<b\oplus d$ 其中操作 $a\oplus b$ 表示 $a$ 和 $b$ [按位异或](https://en.wikipedia.org/wiki/Bitwise_operation#XOR) 你需要在询问不超过 $62$ 次之后输出 $(a,b)$ 的值,保证 $0\le a, b < 2^{30}$。 ### 输入格式: 请见“交互” ### 输出格式: 输出 `! a b` 以输出答案,不要忘了在输出答案后清除缓冲区 ### 交互: 输出 `? c d` 以询问,$c$ 和 $d$ 都应该是小于 $2^{30}$ 的非负整数,不要忘了在输出每一次询问后清除缓冲区 你可以用下列操作来清除缓冲区: - C++:`fflush(stdout)` - Java:`System.out.flush()` - Python:`stdout.flush()` - Pascal:`fflush(stdout)` - 对于其它语言请参考文档 ~~Hacking:~~ ~~输出两个用空格隔开的整数 $a$ 和 $b$ 来 hack 别人($0\le a,b<2^{30}$)~~题目描述
This is an interactive problem! Ehab plays a game with Laggy. Ehab has 2 hidden integers $ (a,b) $ . Laggy can ask a pair of integers $ (c,d) $ and Ehab will reply with: - 1 if $ a \oplus c>b \oplus d $ . - 0 if $ a \oplus c=b \oplus d $ . - -1 if $ a \oplus c<b \oplus d $ . Operation $ a \oplus b $ is the [bitwise-xor operation](https://en.wikipedia.org/wiki/Bitwise_operation#XOR) of two numbers $ a $ and $ b $ . Laggy should guess $ (a,b) $ with at most 62 questions. You'll play this game. You're Laggy and the interactor is Ehab. It's guaranteed that $ 0 \le a,b<2^{30} $ .输入输出格式
输入格式
See the interaction section.
输出格式
To print the answer, print "! a b" (without quotes). Don't forget to flush the output after printing the answer. Interaction To ask a question, print "? c d" (without quotes). Both $ c $ and $ d $ must be non-negative integers less than $ 2^{30} $ . Don't forget to flush the output after printing any question. After each question, you should read the answer as mentioned in the legend. If the interactor replies with -2, that means you asked more than 62 queries and your program should terminate. To flush the output, you can use:- - fflush(stdout) in C++. - System.out.flush() in Java. - stdout.flush() in Python. - flush(output) in Pascal. - See the documentation for other languages. Hacking: To hack someone, print the 2 space-separated integers $ a $ and $ b $ $ (0 \le a,b<2^{30}) $ .
输入输出样例
输入样例 #1
1
-1
0
输出样例 #1
? 2 1
? 1 2
? 2 0
! 3 1