首页 > 代码库 > hdu 2059
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。