题目描述
奶牛们最近在学习统计学理论,但那些机械烦琐的对数据的统计分析几乎把她们搞疯了。于是奶牛们找到了你,希望你能帮帮她们。
你拿到了一张写着N (1 <= N <= 500)个数的表,表中第i个数字为X_i (-5,000 <= X_i <= 5000),你的任务是计算如下两个值:
* 所有数的平均数(所有数的和除以N)
* 所有数的中位数(如果N是奇数,中位数为排序后的数列里位于正中的那个;如果N是偶数,中位数是排序后的数列位于正中的两个数的平均数)
答案保留6位小数。
输入
* 第1行: 1个正整数N
* 第2..N+1行: 第i+1为1个整数:X_i
输出
* 第1行: 输出所有数的平均数
* 第2行: 输出所有数的中位数
很水的一题就是一个实型的数组排序然后找中位数
var
b:array[0..100000] of real;
i,j,k,n,m:longint;
s,t:real;
begin
assign(input,'stats.in');reset(input);
assign(output,'stats.out');rewrite(output);
readln(n);
for i:=1 to n do
begin
readln(b[i]);
s:=s+b[i];
end;
for i:=1 to n do
for j:=1 to n-1 do
begin
if b[j]>b[j+1] then
begin
t:=b[j];
b[j]:=b[j+1];
b[j+1]:=t;
end;
end;
writeln(s/n:0:6);
if n mod 2=1 then writeln(b[n div 2+1]:0:6)
else writeln((b[n div 2]+b[n div 2+1])/2:0:6);
end.
Comments NOTHING