首页 > 试题广场 >

[NOIP2007]统计数字

[编程题][NOIP2007]统计数字
  • 热度指数:149 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。

输入描述:
第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

备注:
40%的数据满足:1 ≤ n ≤ 1000
80%的数据满足:1 ≤ n ≤ 50000
100%的数据满足:1 ≤ n ≤ 200000,每个数均不超过1500000000(1.5*109
头像 宝硕
发表于 2020-10-25 16:16:00
为大家介绍一种使用 map 的解法,代码很简洁。 #include<bits/stdc++.h> using namespace std; int main() { int n, t; map<int, int> m; cin >> n 展开全文
头像 丹323327
发表于 2020-02-04 16:54:08
解题思路 1.获取输入n2.依次获取每个自然数,存放在a[n]中3.数组a排序4.统计数字次数:如果a[i]==a[i+1],次数+1否则(说明a[i]是当前数字出现的最后一次),输出a[i]和当前次数,然后将次数重置为1 #include<iostream> #include< 展开全文
头像 savage
发表于 2019-08-31 14:20:25
题目描述 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。 展开全文
头像 云羔ing
发表于 2020-08-03 23:35:52
题目描述 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5109)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。*输入描述:第1行是整数n,表示自然数的个数。第2~n+1行每行一个自然数。输出描述:输出m行 展开全文
头像 牛客641503986号
发表于 2023-03-26 19:22:56
###sort+set容器 #include<iostream> #include<algorithm> #include<set> using namespace std; const int N=1e7+10; int a[N],cnt[N]; multi 展开全文
头像 青笙
发表于 2021-12-15 20:45:52
解决此题的关键在于如何排序,我们可以利用冒泡排序或者其他排序,而我用到的是sort()方法,让数组从小到大的排列,然后再利用if语句判断两个相邻的数组的值是否相等,若相等,则计时器count自加一,如果相邻数组不相等,则进行相应的输出,但通过判断两个相邻的数组相等会造成一个漏洞,就是无法对最后一个数 展开全文
头像 Seek_future
发表于 2023-04-23 20:10:16
如果只是在c语言中并且数据输入的时候没有太多的要求,可以使用桶排序,以空间换时间,不过需要开辟一个很大内存空间,该题所给的的自然数的范围太大,如果重新去开辟一个恨得数组存在的严重的浪费内存的问题,(可以试着使用malloc和free去解决),结果也是不好用。、 数字太大,存而先到python,并且可 展开全文
头像 牛奶烧仙草
发表于 2021-11-16 10:13:39
C语言,快排,计数,输出(long long) ```#include<stdio.h> #include<stdlib.h> #define N 200000 //N太大放外边 int cmp (const void *a,const void *b)//排序 { re 展开全文

问题信息

难度:
0条回答 2873浏览

热门推荐

通过挑战的用户

[NOIP2007]统计数字