hdu 2095 find your present (2) 找到只出现一次的数字

find your present (2)

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/1024 K (Java/Others)

Total Submission(s): 15349    Accepted Submission(s): 5821

Problem Description

In the new year party, everybody will get a "special present".Now it‘s your turn to get your special present, a lot of presents now putting on the desk, and only one of them will be yours.Each present has a card number on it, and your present‘s card number
will be the one that different from all the others, and you can assume that only one number appear odd times.For example, there are 5 present, and their card numbers are 1, 2, 3, 2, 1.so your present will be the one with the card number of 3, because 3 is
the number that different from all the others.

Input

The input file will consist of several cases.

Each case will be presented by an integer n (1<=n<1000000, and n is odd) at first. Following that, n positive integers will be given in a line, all integers will smaller than 2^31. These numbers indicate the card numbers of the presents.n = 0 ends the input.

Output

For each case, output an integer in a line, which is the card number of your present.

Sample Input

5
1 1 3 2 2
3
1 2 1
0

Sample Output

3
2

数据有点水, 不符合要求的都是成对出现,所以有人用位运算^给A了

我是用map做, 之前还想排序下搞,发现内存限制,,,, 1024*1024 / 4=262144   无法满足要存的10^6

所以,只能map了.

#include <stdio.h>
#include <algorithm>
#include <map>
using namespace std;

int main()
{
	int n,i,a;
	map<int,int>my;
	map<int,int>::iterator it;
	while(scanf("%d",&n),n)
	{
		for(i=0;i<n;i++)
		{
			scanf("%d",&a);
			my[a]++;
		}
		for(it=my.begin();it!=my.end();it++)
		{
			if(it->second==1)
			{
				printf("%d\n",it->first);
				break;
			}
		}
		my.clear();
	}
	return 0;
}

hdu 2095 find your present (2) 找到只出现一次的数字

时间: 2024-10-09 06:35:27

hdu 2095 find your present (2) 找到只出现一次的数字的相关文章

(HDUSTEP 2) hdu 2095 find your present (2)(找到出现奇数次的那个数)

题目如下: find your present (2) Time Limit: 1000/2000 MS (Java/Others) Memory Limit: 32768/1024 K (Java/Others) Total Submission(s): 6275 Accepted Submission(s): 1639   Problem Description In the new year party, everybody will get a "special present"

hdu 2095 find your present(2)

find your present (2) Time Limit: 1000/2000 MS (Java/Others) Memory Limit: 32768/1024 K (Java/Others) Total Submission(s): 5186 Accepted Submission(s): 1513   Problem Description In the new year party, everybody will get a "special present".Now

HDU 2095 find your present(异或)

题意 求一组数中只出现过奇数次的数  输入保证只有一个数满足 知道一个数与自己的异或等于0  与0的异或等于自己就行咯 #include<cstdio> using namespace std; int main() { int n, t, ans; while(scanf("%d", &n), n) { ans = 0; for(int i = 1; i <= n; ++i) { scanf("%d", &t); ans = an

hdu 2095 find your present (2)

题意:给n个正整数,并保证只有一个数是与众不同的,要你找出与众不同的数. 代码: #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int a[1000005]; int main() { int n; while(scanf("%d",&n)&&n) { for(int i=0; i<n; i++) scanf(&qu

HDU 2095 find your present (2) 异或

异或 暴力开数组,然而明显不过,要求32768k,结果超时了 #include <cstdio> #include <cstring> int book[1000000]; int main() { int n; while (scanf("%d", &n) && n) { int a; memset(book, 0, sizeof(book)); for (int i = 0; i < n; i++) { scanf("

hdoj 2095 find your present (2) 【位运算】

题意:找出现次数不同于其他数的数. 超时了一次,后来知道了位运算...长见识了 0^0 =0 0^1=1 1^0=1 1^1=0 0^1^1 = 0 可以发现 任何数异或0还是他本身. 一个数异或另一个数偶数次还是他本身. 代码(位运算都600+ms): #include <stdio.h> #include <math.h> int main() { int a, b, n; while(scanf("%d", &n), n){ scanf("

杭电acm 2095 find your present (2)

#include<iostream>using namespace std;int main(){    int n,x,y;    while(cin>>n,n)    {         cin>>x;                   while(--n)         {             cin>>y;             x=x^y;         }         cout<<x<<"\n&q

面试题40:数组中只出现一次的数字

题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字.要求时间复杂度是O(n),空间复杂度是O(1). 题目分析 剑指Offer(纪念版)P211 ① 自己与自己异或为0 ② 0与数A异或为A ③ 异或满足交换律 代码实现 void FindNumsAppearOnce(int data[], int length, int* num1, int* num2) { if (data == NULL || length < 2) return; in

数组中只出现一次的数字(剑指offer)思维有点巧

数组中只出现一次的数字 参与人数:1144时间限制:1秒空间限制:32768K 通过比例:21.75% 最佳记录:0 ms|0K(来自  牛客563536号) 题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 题目链接:http://www.nowcoder.com/practice/e02fdb54d7524710a7d664d082bb7811?rp=2&ru=/ta/coding-interviews&qru=/ta/coding