題意:給出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