?
题意:给出x1,x2,x3,x4,x5,x6,x7,x8与某值m进行异或运算后的结果,再给出x1~x8之和与m进行异或运算后的结果sum,求m.
思路:
根据位运算特性来做,由于m最大为32位,我们可以从最低位依次来推理得到,用x>>i&1来取右数第i-1位的值。
假设二进制右起第一位是1,算出所有xi的右起第一位二进制结果,累加得到tmp,比较tmp与sum的最右位,符合则m最右位为1,否则为0;
于是x1~x8的二进制最右位已求出,累加求进位依次类推。
?
很有意思的一道题~
?
code:
?
/*
*Author : Flint_x
*Created Time : 2015-07-20 14:19:04
*File name : whust1_I.cpp
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include