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("%d",&a[i]);
        sort(a,a+n);
        int num=a[0];
        int cnt=1;
        a[n]=-1;
        for(int i=1; i<=n; i++)
        {
           if(a[i]==num)
           {
               cnt++;
           }
           else
           {
               if(cnt==1)
               {
                   printf("%d\n",num);
                   break;
               }
               else
               {
                   cnt=1;
                   num=a[i];
               }
           }
        }
    }
    return 0;
}
时间: 2024-10-29 06:26:37

hdu 2095 find your present (2)的相关文章

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"

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

(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(异或)

题意 求一组数中只出现过奇数次的数  输入保证只有一个数满足 知道一个数与自己的异或等于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) 异或

异或 暴力开数组,然而明显不过,要求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

杭电 2095 find your present (2)【位运算 异或】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2095 解题思路:因为只有我们要求的那个数出现的次数为奇数,所以可以用位运算来做,两次异或同一个数最后结果不变,那么就可以知道异或运算相当于过滤掉了出现次数为偶数的数,最后只留下了唯一的那一个出现次数为奇数的数. 反思:位运算好陌生,好好学. #include<stdio.h> int main() { int n; long int a; while(scanf("%d",&a

HDOJ(HDU) 1563 Find your present!(异或)

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,