列表

详情


KS33. 寻找奇数

描述

现在有一个长度为 n 的正整数序列,其中只有一种数值出现了奇数次,其他数值均出现偶数次,请你找出那个出现奇数次的数值。

数据范围:

输入描述

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

输出描述

一个数,即在序列中唯一出现奇数次的数值。

示例1

输入:

5
2 1 2 3 1

输出:

3

示例2

输入:

1
1

输出:

1

原站题解

C++ 解法, 执行用时: 65ms, 内存消耗: 432KB, 提交时间: 2021-11-19

#include<stdio.h>

inline int read()//inline 加速读入
{
	int x=0;char c=getchar();
	while (c<'0'||c>'9') c=getchar();
	while (c>='0'&&c<='9') x=x*10+c-'0',c=getchar();
	return x;
}

int main() {
    int res , n , tmp;
    n = read();
    for (int i = 1 ; i <= n ; i ++) {
        res ^= read();
    }
    printf("%d\n",res);
}

C++ 解法, 执行用时: 124ms, 内存消耗: 18540KB, 提交时间: 2020-07-28

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<string>
using namespace std;
#define ll long long
#define maxn 200200
#define pb push_back
inline int read()
{
    int x=0;bool t=false;char ch=getchar();
    while((ch<'0'|ch>'9')&&ch!='-')ch=getchar();
    if(ch=='-')t=true,ch=getchar();
    while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
    return t?-x:x;
}
    
int main()
{
    int n;
    n=read();
    int a = 0;
    int x;
    while(n--)
    {
        x = read();
        a ^= x;
    }
    printf("%d",a);
    return 0;
}

上一题