1041 Be Unique (20)(20 分)
作者: CHEN, Yue
单位: PAT联盟
时间限制: 100ms
内存限制: 64MB
代码长度限制: 16KB
Being unique is so important to people on Mars that even their lottery is designed in a unique way. The rule of winning is simple: one bets on a number chosen from [1, 10^4^]. The first one who bets on a unique number wins. For example, if there are 7 people betting on 5 31 5 88 67 88 17, then the second one who bets on 31 wins.
Input Specification:
Each input file contains one test case. Each case contains a line which begins with a positive integer N (<=10^5^) and then followed by N bets. The numbers are separated by a space.
Output Specification:
For each test case, print the winning number in a line. If there is no winner, print "None" instead.
Sample Input 1:
7 5 31 5 88 67 88 17
Sample Output 1:
31
Sample Input 2:
5 888 666 666 888 888
Sample Output 2:
None
这道题首先是需要猜别人没有猜的数字,并且能猜测的数字范围不算大,所以我们依然可以考虑使用散列表的方法来解这个题。
首先遍历输入的数字,使用散列表对其进行记录,然后再次遍历输入数字,当找到第一个猜测次数只有1的数字的时候,这个数字就是获胜数字,将其输出即可,如果没有获胜数字产生,就输出None。
总的来说这道题还算是甲级中比较简单的题型。
AC代码:
#include <cstdio>
int main() {
int number[10010] = {0};
int n, input[100010];
scanf("%d", &n);
for(int i = 0; i < n; ++i) {
scanf("%d", &input[i]);
++number[input[i]];
}
bool have = false;
for(int i = 0; i < n; ++i) {
if(number[input[i]] == 1) {
have = true;
printf("%d\n", input[i]);
break;
}
}
if(!have) {
printf("None\n");
}
return 0;
}
如有错误,欢迎指摘。