SiriBlog

siriyang的个人博客


  • 首页

  • 排行榜

  • 标签115

  • 分类37

  • 归档320

  • 关于

  • 搜索

CCF-CSP:201903-1小中大

发表于 2019-12-31 更新于 2021-10-29 分类于 计算机 , 算法题 , CCF-CSP 阅读次数: Valine:
本文字数: 1.8k 阅读时长 ≈ 2 分钟

CCF-CSP题目汇总

题目

编号: 201903-1

试题名称: 小中大

时间限制: 1.0s

内存限制: 512.0MB

题目背景

  在数据分析中,最小值最大值以及中位数是常用的统计信息。

题目描述

  老师给了你n个整数组成的测量数据,保证有序(可能为升序或降序),可能存在重复的数据。请统计出这组测量数据中的最大值、中位数以及最小值,并按照从大到小的顺序输出这三个数。

输入格式

  从标准输入读入数据。
  第一行输入一个整数n,在第二行中存在n个有序的整数,表示测量数据,可能为升序或降序排列,可能存在连续多个整数相等,整数与整数之间使用空格隔开。

输出格式

  输出到标准输出。
  包含一行,包括最大值、中位数以及最小值共三个数,并按照从大到小的顺序输出。数据与数据之间使用空格隔开。对于整数请直接输出整数,对于可能出现的分数,请输出四舍五入保留1位小数的结果。

样例数据

样例1输入

1
2
3
-1 2 4

样例1输出
4 2 -1

样例1解释
  4为最大值,2为中位数,-1为最小值。

样例2输入

1
2
4
-2 -1 3 4

样例2输出
4 1 -2

样例2解释
  4为最大值,(-1+3)÷2=1为中位数,-2为最小值。

子任务

测试点 n 测量数据的绝对值 测量数据是否均相同
1,2 $\le 10^3$ $\le 10^7$ 是
3,4,5,6 $\le 10^3$ $\le 10^7$ 否
7,8 $\le 10^5$ $\le 10^7$ 是
9,10,11,12,13,14,15,16,17,18,19,20 $\le 10^5$ $\le 10^7$ 否

解答

分析

  由于数列本身有序,所以直接获取收尾数据比较大小就可以获得最大、最小值。中值根据n的奇偶情况,奇数情况直接获取中间数据,偶数情况获取中间两个数据计算品均值。由于只需要上述几个数据,所以其他数据可以直接读取进来就丢掉,节省空间复杂度为O(1)。
  题目要求四舍五入保留一位小数,但计算结果要么是整数要么就只有小数点后0.5,所以不用考虑四舍五入,只需要考虑小数和整数情况的输出格式即可。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <iostream>

using namespace std;

int main() {

int n;//数字总个数
int max;//最大值
int mid1, mid2;//中值,当n为偶数的时候计算mid1、mid2均值
int min;//最小值

//读取输入数据
cin >> n;

for (int i = 0; i < n; i++) {
int t;
cin >> t;
if (i == 0)
min = t;
if (i == n - 1)
max = t;
if (i == n / 2)
mid1 = t;
if (n % 2 == 0 && i == n / 2 - 1)
mid2 = t;
}

//因为数列有序,所以可以直接比较两个端点获得最大最小值
if (max < min) {
int t = max;
max = min;
min = t;
}

//对于n为奇数和偶数分别处理
if (n % 2 == 0) {
if ((mid1 + mid2) % 2 == 0) {//判断是否能整除
printf("%d %d %d", max, (mid1 + mid2) / 2, min);
}
else {
printf("%d %.1f %d", max, (mid1*1.0 + mid2) / 2, min);//乘1.0使数据转换为浮点数进行计算,以免取整截断
}
}
else {
printf("%d %d %d", max, mid1, min);
}

return 0;
}
-------- 本文结束 感谢阅读 --------
相关文章
  • CCF-CSP:201409-3字符串匹配
  • CCF-CSP:201403-3命令行选项
  • CCF-CSP/201312-3最大的矩形
  • CCF-CSP:201403-2窗口
  • CCF-CSP:201403-1相反数
觉得文章写的不错的话,请我喝瓶怡宝吧!😀
SiriYang 微信支付

微信支付

SiriYang 支付宝

支付宝

  • 本文标题: CCF-CSP:201903-1小中大
  • 本文作者: SiriYang
  • 创建时间: 2019年12月31日 - 19时12分
  • 修改时间: 2021年10月29日 - 18时10分
  • 本文链接: https://blog.siriyang.cn/posts/20191231194316id.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
算法题 CCF-CSP
CCF-CSP:201903-2二十四点
CCF-CSP题目汇总
  • 文章目录
  • 站点概览
SiriYang

SiriYang

努力搬砖攒钱买镜头的摄影迷
320 日志
33 分类
88 标签
RSS
GitHub E-Mail
Creative Commons
Links
  • 友情链接
  • 作品商铺

  1. 题目
    1. 题目背景
    2. 题目描述
    3. 输入格式
    4. 输出格式
    5. 样例数据
    6. 子任务
  2. 解答
    1. 分析
    2. 代码
蜀ICP备19008337号 © 2019 – 2025 SiriYang | 1.7m | 25:41
0%