广师oj 2236-孤独数

          广师oj 2236-孤独数 

有2n+1个数,其中有n对数字是成双出现的,有且仅有1个数字只有它自己一个。请你找出这个孤单数。

第一行有且只有一个正整数n(n<=500000)
第二行有2n+1个数ai(-10^9<=ai<=10^9)

有且只有一个数,输出这个孤单数。

3
6 2 6 3 7 7 3

2

利用异或^,偶数个相同的数字异或之后为零,任何非零数与零异或为其本身。

#include  <stdio.h>

int main()
{
    long x,y,z,t,num;
    scanf("%ld",&t);
    num = 0;
    for(x=0;x<t*2+1;x++)
    {
        scanf("%ld",&z);
        num = num^z;
    }
    printf("%ld\n",num);
    return 0;
}

将2n+1个数存起来,用快排把数字排序,再判断相邻的两个数是否相同、

#include <stdio.h>
#include <algorithm>

using namespace std;

int a[1000005];

int main()
{
    int x,y,z,t;
    scanf("%d",&t);
    for(x=0;x<(t*2)+1;x++)
    {
        scanf("%d",&a[x]);
    }
    sort(a,a+(t*2+1));
    a[t*2+1] = a[2*t]-1;
    for(x=0;x<(t*2+1);x+=2)
    {
        if(a[x]!=a[x+1])
        {
            printf("%d\n",a[x]);
            break;
        }
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值