思路:排个序然后扫一遍即可
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
#define LL long long
const int maxn = 100000+100;
LL a[maxn];
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
for(int i = 1;i<=n;i++)
scanf("%lld",&a[i]);
sort(a+1,a+1+n);
for(int i = 1;i<=n;i+=3)
{
if(a[i]==a[i+1]&&a[i+1]==a[i+2])
continue;
else
{
printf("%lld\n",a[i]);
break;
}
}
}
}
时间限制 1000 ms
内存限制 65536 KB
题目描述
Given an array with N integers where all elements appear three times except for one. Find out the one which appears only once.
输入格式
Several test cases are given, terminated by EOF.
Each test case consists of two lines. The first line gives the length of array N(1≤N≤105) , and the other line describes the N elements. All elements are ranged in [0,263−1] .
输出格式
Output the answer for each test case, one per line.
输入样例
4
1 1 1 3
10
1 2 3 1 2 3 1 2 3 4
输出样例
3
4