NC16643. [NOIP2007]统计数字
描述
输入描述
第1行是整数n,表示自然数的个数。
第2~n+1行每行一个自然数。
输出描述
输出m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。
示例1
输入:
8 2 4 2 4 5 100 2 100
输出:
2 3 4 2 5 1 100 2
C++11(clang++ 3.9) 解法, 执行用时: 89ms, 内存消耗: 2040K, 提交时间: 2020-07-19 15:47:32
#include<bits/stdc++.h> using namespace std; int main(){ int n,a; map<int,int>s; cin>>n; while(n--){ cin>>a; s[a]++; } for(auto x:s) cout<<x.first<<" "<<x.second<<endl; }
Ruby(2.4.2) 解法, 执行用时: 222ms, 内存消耗: 7372K, 提交时间: 2019-08-20 17:18:17
n=gets.to_i a={} n.times do i=gets.to_i if a.has_key? i then a[i]+=1 else a[i]=1 end end a.sort.each_entry{|i,j| puts "#{i} #{j}"}
pypy3(pypy3.6.1) 解法, 执行用时: 368ms, 内存消耗: 33300K, 提交时间: 2020-10-05 22:50:55
from collections import Counter l = [] for _ in range(int(input())): l.append(int(input())) count = dict(Counter(l)) for i in sorted (count): print(i, count[i])
Python3 解法, 执行用时: 486ms, 内存消耗: 5376K, 提交时间: 2022-09-27 20:35:10
n=int(input()) l={} for i in range(n): t=int(input()) if t in l:l[t]+=1 else:l[t]=1 for i in sorted(l.keys()): print(i,l[i])