jzoj 1576. 【普及模拟】自动统计机 解题报告

题目描述
奶牛们最近在学习统计学理论,但那些机械烦琐的对数据的统计分析几乎把她们搞疯了。于是奶牛们找到了你,希望你能帮帮她们。

    你拿到了一张写着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行: 输出所有数的中位数
样例输入
5

12

4

6

8

2
代码如下:模拟。。
var
 a:array[0..500]of real;
 n,i,j:longint;
 z,p:real;

begin
 assign(input,'stats.in');reset(input);
 assign(output,'stats.out');rewrite(output);
 readln(n);
 for i:=1 to n do
  begin
   readln(a[i]);
   p:=p+a[i];
  end;
 for i:=1 to n do
  for j:=1 to n do
   if a[i]<a[j] then begin a[0]:=a[i]; a[i]:=a[j]; a[j]:=a[0]; end;
  if n mod 2=0 then z:=(a[(n div 2)+1]+a[n div 2])/2
               else z:=a[(n div 2)+1];
  p:=p/n;
 writeln(p:0:6);
 writeln(z:0:6);
 close(input); close(output);
end.
样例输出
6.400000

6.000000

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值