/* Thu Nov 25 15:19:14 JST 2004 */ /* Thu Nov 25 15:55:29 JST 2004 */ #include unsigned int N[9]; unsigned int mask_bit[32], summ_bit[32]; int main() { int S, iS; int i, j; unsigned int bit, K, sum[2]; bit = 0x00000001; for (i = 0; i < 32; i++) { mask_bit[i] = bit; if (i > 0) { summ_bit[i] = summ_bit[i-1] + mask_bit[i]; } else { summ_bit[i] = mask_bit[i]; } bit <<= 1; } scanf("%d", &S); for (iS = 0; iS < S; iS++) { for (i = 0; i < 9; i++) { scanf("%x", &N[i]); } if (feof(stdin)) { break; } K = 0; for (i = 0; i < 32; i++) { sum[0] = sum[1] = 0; for (j = 0; j < 8; j++) { sum[0] += (N[j] & summ_bit[i]) ^ (K); sum[1] += (N[j] & summ_bit[i]) ^ (K | mask_bit[i]); } /* printf("%8x:%8x ", sum[0], sum[1]); */ if ((sum[0] & summ_bit[i]) == ((N[8] ^ (K )) & summ_bit[i])) { /* printf("!"); */ } if ((sum[1] & summ_bit[i]) == ((N[8] ^ (K | mask_bit[i])) & summ_bit[i])) { /* printf("?"); */ K |= mask_bit[i]; } } printf("%x\n", K); } return 0; }