求N个整数的平均数、众数和中位数

题目描述

求 NN 个整数的平均数,众数和中位数。

小知识:

1. 众数

如有 99个数:17,13,17,99,17,17,33,16,17,其中 17 出现的次数最多,即为这组数的众数。 (本题确保测试数据中,出现次数最多的数只有一个)

2. 中位数

如有 99个数:102,170,96,90,97,106,110,182,100。

将这 99个数按一定的顺序(从大到小或从小到大)排列后得到:182182,170170,110110,106106,102102,100100,9797,9696,9090。正中间的一个数是 102102 , 102102 是这组数的中位数。

而这 10个数:106106,9999,104104,120120,107107,112112,3333,102102,9797,100100。

按一定顺序排列后得到:120120,112112,107107,106106,104104,102102,100100,9999,9797,3333。

正中间有两个数:104104,102102 ,中位数就是这两个数的平均数,即 (104+102)/2=103.0(104+102)/2=103.0 。

输入

第一行为整数 N( 5≤N≤10000 );

第二行为空格隔开的 N 个数 AiAi ( 1000≤Ai≤100)。

输出

输出空格隔开的平均数 众数 中位数(平均数保留两位小数,中位数保留一位小数)。

样例

输入

复制

6
5 2 2 3 4 6
输出

复制

3.67 2 3.5

#include<bits/stdc++.h>
using namespace std;
int  main(){
	int a[10005]={0},b[105]={0};
	int m=0,n=0,c=0,s=0,k=0;
	double f,t;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
		s=s+a[i];
		b[a[i]]++;
	}
	m=b[0];
	k=0;
	for(int i=1;i<=100;i++){
		if(b[i]>m){
			m=b[i];
			k=i;
		}
	sort(a,a+n);
	if(n%2==0){
		t=(a[n/2]+a[n/2-1])/2.0;
	}else{
		t=a[n/2];
	}
		}
	f=s*1.0/n;
	printf("%.2f %d %.1f",f,k,t);
	return 0; 
}

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值