Description
Give you a number of n series, in which a number of more than n / 2 times , you should find out that the number (n<=500000,x<=10^19)
Input
The first line is a positive integer n. The second line of n positive integers separated by spaces.
Output
A Positive integer on a line indicates that number
Sample Input
5
3 2 3 1 3
Sample Output
3
解析:就是让我们输出出现次数超过一半的那个数,但是x范围最多到10的19次方,long long也是存不下,所以我们直接用字符串类型,然后用map计数即可。
#include <map>
#include <string>
#include <iostream>
using namespace std;
map<string,int> mp;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
string a,f;//f记录答案数
int n;
while(cin>>n)//题目没说,多组输入
{
mp.clear();//清空map
for(int i=0;i<n;i++)
{
cin>>a;
mp[a]++;//出现次数+1
if(mp[a]>n/2) f=a;//超过一半记录一下答案
}
cout<<f<<endl;
}
return 0;
}