【9207&&b701】统计数字(NOIP2007)
来源:互联网 发布:淘宝投诉盗图不成立 编辑:程序博客网 时间:2024/06/06 01:53
问题描述
某次科研调查时得到了n个自然数,每个数均不超过1500000000 (1.5*109)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。
Input
输入文件count.in包含n+1行; 第一行是整数n,表示自然数的个数; 第2~n+1每行一个自然数。
Output
输出文件count.out包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。 【限制】
40%的数据满足:1<=n<=1000
80%的数据满足:1<=n<=50000
100%的数据满足:1<=n<=200000,每个数均不超过1500 000 000(1.5*109)
Sample Input
1291400000000389564589768974563228815000000009089
Sample Output
3 16 18 29 189 290 15645897 1897456322 11400000000 11500000000 1
【题解】
用快排排一遍,相同的数字会连续出现,输出时注意下就好。
【代码】
#include <cstdio>const int MAXN = 200000+10;int n,a[MAXN];void input_data() //输入数据 {scanf("%d",&n);for (int i=1;i<=n;i++)scanf("%d",&a[i]);}void q_sort(int l,int r) //快排 {int m = a[(l+r)/2];int i = l,j = r;do{while (a[i] < m) i++;while (m < a[j]) j--;if (i <= j) {int t = a[i];a[i]=a[j];a[j]=t;i++;j--;}} while (i<=j);if (l < j) q_sort(l,j);if (i < r) q_sort(i,r);}void get_put_ans() //输出答案 {int i = 1;while (i <= n){int j = i+1;while ( a[j] == a[i]) j++;printf("%d %d\n",a[i],j-i);i = j;}}int main(){input_data();q_sort(1,n);get_put_ans();return 0;}
0 0
- 【9207&&b701】统计数字(NOIP2007)
- NOIP2007 统计数字
- [模拟][NOIP2007] 统计数字
- noip2007 统计数字 (排序)
- 统计数字(NOIP2007)提高组
- luogu1097统计数字[noip2007提高组Day1T1]
- NOIP2007 提高组 复赛 count 统计数字
- 统计数字
- 统计数字
- 统计数字
- 统计数字
- 统计数字
- 统计数字
- 统计数字
- 统计数字
- 统计数字
- 统计数字
- 统计数字
- mapreduce(四):单表关联查询
- 关于有偿提供拼图响应式后台的通知
- MFC树形控件(CTreeCtrl)用法(上)
- 工程师和他媳妇儿好玩的对话2——20160704
- AngularJS执行流程详解
- 【9207&&b701】统计数字(NOIP2007)
- pushviewcontroller和pop
- rxjava的使用(简洁易懂)
- 打造超级IP,你真悟错了道!
- swiper教程--swiper的基础使用(十九)
- MFC树形控件(CTreeCtrl)用法(下)
- Log4NEt 配置
- php判断字符串长度 strlen()与mb_strlen()函数
- 财务化显示textfield数字