显示原始代码
#include <string>
#include <stdio.h>
#include <iostream>
#include <stack>
#include <math.h>
using namespace std;
#define max(a, b) a >= b ? a : b
int change_to_bin(int num) {
int result = 0, k = 1, i, n;
n = num;
while (n) {
i = n % 2;
result += k * i;
k *= 10;
n /= 2;
}
return (result);
}
int change_to_decimal(int num) {
int result = 0, n, i, j = 0;
n = num;
while (n) {
i = n % 10;
result += i * pow(2, j);
j += 1;
n /= 10;
}
return (result);
}
int my_xor(int a, int b) {
int i, aa, bb, lena = 1, lenb = 1, len, k = 10, result = 0;
aa = change_to_bin(a);
bb = change_to_bin(b);
while (aa / k) {
lena += 1;
k *= 10;
}
while (bb / k) {
lenb += 1;
k *= 10;
}
len = max(lena, lenb);
k = 1;
for (i = 0; i < len; i++) {
result += k * ((aa % (k * 10) / k) ^ (bb % (k * 10) / k));
k *= 10;
}
result = change_to_decimal(result);
return (result);
}
int main() {
int n, i, j, num_list = 0, act_num, act_bin, con;
int mid;
scanf("%d", &n);
act_num = 0;
int act[n], list[n];
while (act_num < n) {
scanf("%d", &act_bin);
if (act_bin == 2) {
scanf("%d", &con);
list[num_list] = con;
num_list += 1;
act_num += 1;
}
if (act_bin == 1) {
for (j = 0; j < num_list; j++) list[j] += 1;
act_num += 1;
}
mid = list[0];
for (j = 1; j < num_list; j++) {
mid = my_xor(mid, list[j]);
}
printf("%d\n", mid);
}
}