首页 > 试题广场 >

寻找奇数

[编程题]寻找奇数
  • 热度指数:8939 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
现在有一个长度为 n 的正整数序列,其中只有一种数值出现了奇数次,其他数值均出现偶数次,请你找出那个出现奇数次的数值。

数据范围:

输入描述:
第一行:一个整数n,表示序列的长度。第二行:n个正整数ai,两个数中间以空格隔开。


输出描述:
一个数,即在序列中唯一出现奇数次的数值。
示例1

输入

5
2 1 2 3 1

输出

3
示例2

输入

1
1

输出

1
#include <stdio.h>
#include<stdlib.h>
int main() {
    int n=0;
    int num=0;
    scanf("%d",&n);
    int* arr=(int*)malloc(sizeof(arr)*n);
    int i=0;
    for(i=0;i<n;i++){
        scanf("%d",&arr[i]);
        num^=arr[i];
    }
    printf("%d\n",num);
    free(arr);
    arr=NULL;
    return 0;
}

发表于 2023-01-26 15:21:43 回复(0)
这道题只需要知道
(a^b)^a == b

发表于 2022-08-30 12:04:34 回复(0)
解题思路:这道题采用异或方法,因为相同的两个数进行异或结果为0,然后再拿0跟其他数进行异或,结果是那个数,就能找出奇数个的数了
#include<stdio.h>
int main()
{
    int n=0;
    int num=0;
    int sum=0;
    scanf("%d",&n);
    
    for(int i=0;i<n;i++)
    {
        scanf("%d",&num);
        sum^=num;
    }
    
    printf("%d\n",sum);
    return 0;
}


发表于 2022-03-09 16:24:28 回复(0)
#include<stdio.h>
int main()
{
    int n,i;
    scanf("%d",&n);
    int count,m=0;
    for(i=0;i<n;i++)
    {
        scanf("%d",&count);
        m^=count;
    }
    printf("%d",m);
    return 0;
}

发表于 2022-02-21 16:52:48 回复(0)
#include<stdio.h>

int main()
{
    long long n=0;
    scanf("%ld",&n);
    long long x=0;
    long long max=0;
    while(~scanf("%ld",&x))
    {
        max^=x;
    }
    printf("%ld\n",max);
    return 0;
}


发表于 2022-01-26 22:39:14 回复(0)