hdu 2095 find your present (2)

题意:输入N个数,只有一个数出现的次数是奇数,其他数出现的次数是偶数。

使用集合写这题,如果放入的数是相同的,那么就把原来的删除,该元素无法加入。


c++代码:

异或运算:

#include <stdio.h>
int main()
{
    int n,x,ans;
    while(scanf("%d",&n),n)
    {
        ans = 0;
        while(n--)
        {
            scanf("%d",&x);
            ans ^= x;
        }
        printf("%d\n",ans);
    }
    return 0;
}


集合:
#include <set>
#include <stdio.h>
using namespace std;
int main()
{
    int n,x;
    set <int> S;
    while(scanf("%d",&n),n)
    {
        while(n--)
        {
            scanf("%d",&x);
            if(S.find(x) == S.end())    //没找到,插入
                S.insert(x);
            else                        //找到了,删除
                S.erase(x);
        }
        printf("%d\n",*S.begin());
        S.clear();
    }
    return 0;
}







find your present (2)

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 18514    Accepted Submission(s): 7127


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.
举一个例子:这里有5个礼物,号码分别为1,2,3,2,1.
so your present will be the one with the card number of 3, 
所以3号礼物是你的,
because 3 is the number that different from all the others.
 因为3出现的次数与其他的都不同。

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. 
在输入的第一行,将会提供一个整数N。
Following that, n positive integers will be given in a line, all integers will smaller than 2^31. 
接着下一行,输入N个整数,所有整数都小于2^31。
These numbers indicate the card numbers of the presents.n = 0 ends the input.
 这些数字代表一个礼物号码,n = 0表示输入结束。

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
Hint
Hint
use scanf to avoid Time Limit Exceeded
 

Author
8600
 

Source
 

Recommend
8600   |   We have carefully selected several similar problems for you:   2094  1597  1593  1595  1599 
 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值