题目描述:
某次科研调查时得到了nn个自然数,每个数均不超过1500000000(1.5×1091500000000(1.5×109)。己知不相同的数不超过1000010000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。
输入:
包含n+1n+1行:
第11行的整数是nn,表示自然数的个数,第2∼n+12∼n+1行每行一个自然数。
输出:
包含mm行(mm为nn个自然数中不相同数的个数),按照自然数从小到大的顺序输出。每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。
输入样例:
8 2 4 2 4 5 100 2 100
输出样例:
2 3 4 2 5 1 100 2
提示:
40%的数据满足:1≤N≤10001≤N≤1000
80%的数据满足:1≤N≤500001≤N≤50000
100%的数据满足:1≤N≤2000001≤N≤200000,每个数据不超过1500000000(1.5×109)
统计次数:
for(int i=1;i<=t;i++){
cin>>a;
int x=mp.size();
mp.insert({a,1});
if(x==mp.size()){
mp[a]++;
}
}
下面是代码:
#include<bits/stdc++.h>
using namespace std;
int t;
map<long long,long long> mp;
int a;
int main(){
cin>>t;
for(int i=1;i<=t;i++){
cin>>a;
int x=mp.size();
mp.insert({a,1});
if(x==mp.size()){
mp[a]++;
}
}
for(auto i = mp.begin(); i != mp.end(); i++){
cout<<i->first<<" "<<i->second<<endl;
}
return 0;
}