n个正整数构成的序列,其中有且仅有一个数在序列中出现了奇数次,其余的数均出现了偶数次。

n个正整数构成的序列,其中有且仅有一个数在序列中出现了奇数次,其余的数均出现了偶数次。找出出现了奇数次的那个数。
这题有一个解法:从头到尾将这n个数异或一遍,得到的数即为要找的那个数。
如果有且仅有两个数出现了奇数次,那该怎么算出这两个数,用这个思路

2个回答

 #include <iostream>
using namespace std;
int main()
{
    int n;
    int *p;
    while (cin >> n)
    {
        p = new int[n];
        for (int i = 0; i < n; i++)
            cin >> p[i];
        int c = p[0];
        for (int j = 1; j < n; j++) {
            c = c^p[j];
        }
        for (int j = 0; j < n; j++) {
            for (int k = j + 1; k < n; k++) {
                if ((c ^ (p[j] ^ p[k])) == 0) {
                    if (p[j] > p[k]) 
                        cout << p[k] << ' ' << p[j] << endl;
                    else 
                        cout << p[j] << ' ' << p[k] << endl;
                    j = n;
                }
            }
        }
    }
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问