CCF-CSP 201903-1:小中大(100分)“附踩坑之后痛的领悟”

这篇博客强调了在解决CCF CSP 201903-1问题时,仔细阅读题目至关重要。作者提醒读者避免心态崩溃,分享了问题分析、测试数据和实用的避坑技巧。

请认真读题认真读题认真读题

重要的事情说三遍

不然容易心态爆炸哦 在这里插入图片描述

问题分析:

第一行先读取一个整数N,然后第二行读取N个整数(默认已经有序,所以不排序)
分别取最大值,最小值和中位数然后输出。
#include<iostream>
using namespace std;
int a[100005];
class Qu20190301{
	private:
			int N;
			int max;
			int min;
			double median;//记录浮点型中位数 
			int median1;  //记录整型中位数 
	public:
		void ioput(){
			cin>>N;
			for(int i=1;i<=N;i++)//录入N个数据 
				cin>>a[i];
			if(a[1]>a[2]){		//判断记录是否降序 
				max=a[1];
				min=a[N];
			}else{				//记录升序 
				max=a[N];
				min=a[1];
			}
			if(N%2==0){			//如果N是偶数 
				if((a[N/2]+a[N/2+1])%2==0)//如果中位数的和是偶数,结果是整数,整数输出 
					cout<<max<<" "<<(a[N/2]+a[N/2+1])/2<<" "<<min;
				else
					cout<<max<<" "<<(a[N/2]+a[N/2+1])/2.0<<" "<<min; //中位数的和是奇数
			}
				 else
				 	cout<<max<<" "<<a[N/2+1]<<" "<<min;//如果N是奇数 
		}
		
}; 
int main(){
	 Qu20190301* o=new  Qu20190301();
	o->ioput();
}

测试数据:

example1:
 3
-1 2 4
result1:
4 2 -1

example2:
4
-2 -1 3 4
result2:
4 1 -2

example3:
4
-1 -1 1 1
result3:
1 0 -1

example4:
4
-1 -1 0 1
result4:
1 -0.5 -1

example5:
4
0 0 1 1
result5:
1 0.5 0

避坑技巧:

1、N的限制:不是10^3,而是10^5(如果是10^3,得分20)
2、输出,你的格式应该是整数直接输出,浮点数保留一位小数输出(我第一眼看
到傻乎乎的去百度了C++中如何四舍五入小数点后第几位,后来发现分母是2,小
数点后只可能是0.5)。输出要分开浮点数和整数(不加区分,得分85)。
3.这题有点爆炸哦,看似简单,取暗藏杀机。不过对编程者是一种思维锻炼,很
考验思维的缜密。

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值