题意:输入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.
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 2use scanf to avoid Time Limit ExceededHintHint
Author
8600
Source
Recommend