问题 6802 --使等式成立

6802: 使等式成立★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 17  解决: 5
[提交][状态][命题人:]

题目描述

给我们三个非负整数b,c,d(0b,c,d1018),请问使得等式(a|b)−(a&c)=d成立的最小非负整数a0<=a<=261)是多少? 其中,‘|’是位或运算符,‘&’是位与运算符。

如果使等式成立的整数a存在,则输出该值,如果找不到满足等式的a,则输出-1

输入

第一行一个整数t(1 ≤ t≤1e4):测试样例数;

接下来共t行,每个测试样例一行三个整数b,cd(0b,c,d1018).

测试数据确保所有测试样例的n之和不超过2e6.

输出

      输出共t行,每个测试用例一行一个整数:使得等式成立的最小非负整数a。如果找不到满足要求的整数a,则输出:-1. 请注意,a为不大于261的非负整数。

样例输入
Copy
3
2 2 2
4 2 6
10 2 14
样例输出
Copy
0
-1
4

提示

对于样例1,(0|2)−(0&2)=2−0=2,因此a=0即为答案。

对于样例2,没有合适的非负整数使得等式成立,因此输出:-1;

对于样例3,(12|10)−(12&2)=14−0=14,因此a=12即为答案。

来源

[提交][状态]