QUST'S OJ problem 1779 统计数字
来源:互联网 发布:写医学论文用什么软件 编辑:程序博客网 时间:2024/06/11 07:09
问题1779: 统计数字
时间限制:1 Sec内存限制:128 MB
题目描述
某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。
输入
输入包含n+1行:
第1行是整数n,表示自然数的个数。
第2~n+1行每行一个自然数。
输出
输出包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。
样例输入
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,每个数均不超过1 500 000 000(1.5*109)
点击打开链接
#include <cstdio>int a[1000005];void qsort(int s, int e)//将数字快排{ int k, t, num; num = a[(s+e)/2]; k = s; t = e; while (k < t) { while (a[k] < num) k++; while (a[t] > num) t--; if (k <= t) { int tmp; tmp = a[k]; a[k] = a[t]; a[t] = tmp; k++; t--; } } if (s < t) qsort(s, t); if (k < e) qsort(k, e);}int main(){ int n, i, j; scanf("%d", &n); for (i = 1; i <= n; ++i) scanf("%d", &a[i]); qsort(1, n); if (n == 1) printf("%d 1\n", a[n]);//特判只有一个数字的情况 int counts = 1;//计数器,用来数相同的数字 for (i = 1; i <= n-1; ++i) { if (a[i+1] == a[i])//当后一个与前一个相同时,计数器+1 { counts++; if (i+1 == n) printf("%d %d\n", a[n], counts);//到最后的时候需要特别输出一下,否则continue了 continue; } printf("%d %d\n", a[i], counts); counts = 1; if (i == n-1 && a[n] != a[n-1]) printf("%d 1\n", a[n]);//最大的只有一个时也单独处理了 } return 0;}
1 0
- QUST'S OJ problem 1779 统计数字
- QUST'S-OJ-problem-1262hanoi1.0
- QUST'S OJ problem 1781 分数线划定
- QUST'S OJ problem 1778奖学金
- QUST'S OJ problem 1641错位的键盘
- QUST'S OJ problem 1002 谁拿了最多奖学金
- QUST'S OJ problem 1355 函数实现二维数组的行列转换
- QUST'S OJ problem1780 接水问题
- QUST'S OJ problem1342 完数
- 【OJ】QUST 1418
- 【OJ】QUST 1400
- 【OJ】QUST 1419
- 【OJ】QUST 1405
- 【OJ】QUST 1401
- 【OJ】QUST 1226
- 【OJ】QUST 1227
- 【OJ】QUST 1228
- 【OJ】QUST 1229
- activiti工作流表的认识
- C#控制台基础 一个数的开方与几次方
- html5超链接和路径a的属性
- 将myeclipse工程导入到eclipse
- poj 1408(计算几何)
- QUST'S OJ problem 1779 统计数字
- tjut 2795
- java/android 设计模式学习笔记(16)---命令模式
- HDU 5438--连通图
- Oracle数据库用户查看操作
- QNetworkAccessManager 放到线程中---finished信号不触发
- win7-64bit安装office2010出错:需要在计算机上安装MSXML6.10.1129.0
- mysql密码重设
- 1000桶酒中寻找一桶毒酒算法