20170910滴滴第一题xor
/* 思路 5^7 = 2,5^7^3^2^1=2 -> 2^(3^2^1)=2 -> 3^2^1 = 0 也就是说,如果异或的结果在之前出现过, 那么这个数之前连续未知个数的几个数的异或为0, 我们只需要知道有异或为0就行,具体那几个数就不用知道了 每次发现一个0就清空记录一次 */ #include<iostream> #include<set> using namespace std; int main() { int num; while (cin >> num) { int temp = 0, c, pcount = 0; set<int> s; s.insert(0); for (int i = 0; i < num; i++) { cin >> c; temp ^= c; //判断是否之前出现过 if (s.count(temp) == 1) { s.clear(); pcount++; temp = 0; } s.insert(temp); } cout << pcount << endl; } }
#滴滴#