版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzc2608/article/details/81178395
#include <iostream>
#include <vector>
using namespace std;
void printOdd(vector<int> & arr)
{
int eO = 0;
for(int i = 0; i < arr.size(); ++i)
eO ^= arr[i];
cout << eO << endl;
}
void printOdd2(vector<int> & arr)
{
int eo = 0, eone = 0;
for(int i = 0; i < arr.size(); ++i)
eo ^= arr[i];
int righreo = eo & (~eo + 1);
for(int i = 0; i < arr.size(); ++i)
{
if(arr[i] & righreo)
eone ^= arr[i];
}
cout << eone << (eone ^ eo) << endl;
}
int main()
{
int a[] = {1, 1, 2, 3, 4, 4, 3, 5};
vector<int> ivec(a, a + 8);
printOdd2(ivec);
}