2 zxm 19960614 zxm_19960614 于 2016.03.20 20:54 提问

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

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

2个回答

caozhy
caozhy   Ds   Rxr 2016.03.20 21:51
zxm_19960614
zxm_19960614   2016.03.21 13:01
 #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
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Pace 6 (1.写一个函数返回参数二进制中 1 的个数;2..获取一个数二进制序列中所有的偶数位和奇数位;3. 输出一个整数的每一位;4.两个int整数的二进制表达中,有多少个位不同
C语言之输出一个数的每一位,和获取一个二进制数所有奇数和偶数位,输出二进制序列的区别。
程序员面试题目总结--数组(五)【数组的后面m个数移动为前面m个数、列的前n项数据、判断整数x是否可以表示成n个连续正整数的和、数组中出现奇数次的元素、二维数组中的查找】
1.将数组A中的内容和数组B中的内容进行交换。(数组一样大) 2.获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。 3.将三个数按从大到小输出。 4.求两个数的最大公约数。
问题六十五: 计算正整数n以内(包括n)的奇数之和及偶数之和。
网易面试题之小易是一个数论爱好者,并且对于一个数的奇数约数十分感兴趣。一天小易遇到这样一个问题: 定义函数f(x)为x最大的奇数约数,x为正整数。 例如:f(44) = 11. 现在给出一个N,需要求
角谷步数 你听说过角谷猜想吗? 任意的正整数,比如 5, 我们从它开始,如下规则计算: 如果是偶数,则除以2,如果是奇数,则乘以3再加1. 如此循环,最终必会得到“1” !
【笔记】获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列
15、一个整数数列,元素取值可能是1~N(N是一个较大的正整数)中的任意一个数,相同数值不会重复出现。
【C】写一个宏将一个数字的奇数位和偶数位交换。实现两个int(32位)整数m和n的二进制表达中,位(bit)不同的个数