小中大(传送门)
一道水题,但是千万要注意临界值,你是不是85分O(∩_∩)O,你是不是吧中位数的计算写成了double类型,注意double 类型输出会报错,当数值太大时。会进行科学计数法,看我给出的案例:
输入:
4
1 10000000 10000000 10000000
错误输出:
10000000 1e+007 1
正确输出:
10000000 10000000 1
满分代码
#include <bits/stdc++.h>
using namespace std;
int n;
int a[100005];
int main(){
cin >> n;
bool judge = false;
for(int i = 1; i <= n; i++){
cin >> a[i];
}
int max,mid,min;
/* 按下面输出则扣15分,差点死了啊啊啊啊啊啊啊啊啊啊!!!!!!!!!!!
double mid = 0.0;
4
1 10000000 10000000 10000000
输出结果错误
10000000 1e+007 1
*/
if(n%2 == 0){
mid = (a[n/2] + a[n/2+1])/2;
if((a[n/2] + a[n/2+1])%2 == 1){
judge = true;
}
}else{
mid = a[(n+1)/2];
}
max = a[1] > a[n] ? a[1] : a[n];
min = a[1] < a[n] ? a[1] : a[n];
if(max <= mid){
int temp = max;
max = mid;
mid = temp;
}
if(judge){
cout << max << " " << mid << ".5 " << min;
}else{
cout << max << " " << mid << " " << min;
}
return 0;
}
这里是题目O(∩_∩)O,欢迎大家留言,有空的话可以点个赞哦(#^ . ^#)
试题编号:
|
201903-1 |
---|---|
试题名称: | 小中大 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: |