hdu 2059
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu 2059相关的知识,希望对你有一定的参考价值。
原题连接:
http://acm.hdu.edu.cn/showproblem.php?pid=2095
题意:
给你n个数(n为奇数)找出不同与其他数的数(说白了就是:找出只出现一次的数);
思路:
(1)排序一下,令d=a[0];
(1)从a[1]开始判断,a[i](i=1,2,...,n)与d是否相等,相等就让d=a[i+1],然后i++(i++是为了防止一个数与自身比较);
代码:
1 #include<cstdio> 2 #include<string> 3 #include<cstring> 4 #include<iostream> 5 #include<algorithm> 6 7 using namespace std; 8 9 int a[1000000]; 10 11 int main() 12 { 13 int n,i; 14 while(scanf("%d",&n)&&n!=0) 15 { 16 int d; 17 for(i=0;i<n;i++) 18 scanf("%d",&a[i]); 19 sort(a,a+n); 20 d=a[0]; 21 for(i=1;i<n;i++) 22 { 23 if(a[i]==d) 24 { 25 d=a[++i]; 26 } 27 else 28 break; 29 } 30 printf("%d\n",d); 31 } 32 return 0; 33 }
ps:开始用流输入超时了,找大神代码,发现了另一种方式:位运算;
出处:http://blog.sina.com.cn/s/blog_8fff62d30100x49p.html
代码:
1 #include<stdio.h> 2 int main() 3 { 4 int i,k,n,s; 5 while(scanf("%d",&n),n) 6 { 7 s=0; 8 for(i=0;i<n;i++) 9 { 10 scanf("%d",&k); 11 s^=k; 12 } 13 printf("%d\n",s); 14 } 15 }
---------------------------欢迎评论-----------------------------
以上是关于hdu 2059的主要内容,如果未能解决你的问题,请参考以下文章