记录编号 |
130148 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[USACO Mar08] 自动统计机 |
最终得分 |
100 |
用户昵称 |
微凉徒眸意 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.003 s |
提交时间 |
2014-10-21 20:33:21 |
内存使用 |
0.32 MiB |
显示代码纯文本
/*奶牛们最近在学习统计学理论,但那些机械烦琐的对数据的统计分析几乎把她们搞疯了。于是奶牛们找到了你,希望你能帮帮她们。
你拿到了一张写着N (1 <= N <= 500)个数的表,表中第i个数字为X_i (-5,000 <= X_i <= 5000),你的任务是计算如下两个值:
所有数的平均数(所有数的和除以N)
所有数的中位数(如果N是奇数,中位数为排序后的数列里位于正中的那个;如果N是偶数,中位数是排序后的数列位于正中的两个数的平均数)
保留6位小数输出
程序名: stats
输入格式:
第1行: 1个正整数N
第2..N+1行: 第i+1为1个整数:X_i
输入样例 (stats.in):
5
12
4
6
8
2
输出格式:
第1行: 输出所有数的平均数
第2行: 输出所有数的中位数
输出样例 (stats.out):
6.400000
6.000000
输出说明:
平均数:(12+4+6+8+2)/5=6.4
数表{2, 4, 6, 8, 12}的中位数为6*/
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int a[510];
int main()
{
freopen("stats.in","r",stdin);
freopen("stats.out","w",stdout);
int n;
double ans1=0,ans2=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
ans1+=a[i];
}
ans1/=n;
sort(a+1,a+1+n);
if(n%2)
{
ans2=a[n/2+1];
}
else
{
ans2=(a[n/2]+a[n/2+1])/2.0;
}
printf("%.6lf\n%.6lf\n",ans1,ans2);
return 0;
}