数组压缩
描述
小k同学得到了两个数组 A 和 B ,长度均为 n,包含了 0∼30000 之间的正整数.
她想把两个数组压缩成一个.
int encodeInteger(int x, int n) {
n = n << (1 << (1 << (1 << 1)));
x = x | n;
return x;
}
void encodeArray(int *A, int *B, int n){
for (int i = 0; i < n; i++) {
A[i] = encodeInteger(A[i], B[i]);
}
}
小k把 数组A 和 数组B传递给 函数encodeArray ,并更新数组 A,丢弃数组B。
现在小k想通过新的数组A,恢复原来的两个数组A和数组B. 你能帮她恢复吗?
输入格式
第一行包括一个整数 1≤T≤100, 表示测试数据的个数.
每个测试数据的第一行包括一个整数 1≤n≤10000, 数组的大小.
之后 n 行是修改过的数组 A 的内容.
输出格式
对每个测试数据, 先输出是第几个测试数据.
第二行输出 n 个数, 空格隔开, 末尾无空格, 表示原数组 A.
第三行输出 n 个数, 空格隔开, 末尾无空格, 表示原数组 B.
样例输入
1
4
196613
655370
196620
131079
样例输出
Case 1:
5 10 12 7
3 10 3 2