额,CCF-CSP认证网站更新之后,不能像原来那样复制题目了,只有一张图片。
解题思路:
今年3月份考CSP认证的时候,我的代码只有80分,因为我没看清题目,题目说可能出现的分数要保留1位小数,而我是直接把中位数强制ceil向上取整转换成int型进行输出,扣了20分遗憾。。。。我是傻比。下次一定看清题目。
100分代码:80分代码:
#include <bits/stdc++.h>
using namespace std;
#define Up(i,a,b) for(int i = a; i <= b; i++)
int main()
{
ios::sync_with_stdio(false);
int n;
cin >> n;
int maxans = -1e9, minans = 1e9;
int a[n+1];
Up(i,1,n)
{
cin >> a[i];
maxans = max(maxans,a[i]);
minans = min(minans,a[i]);
}
int middle = n&1 ? a[(n+1)/2] : ceil((a[n/2]+a[n/2+1])/2.0); //n&1相当于n%2,用来判断奇偶性
printf("%d %d %d\n", maxans, middle, minans);
return 0;
}
100分代码:
#include <bits/stdc++.h>
using namespace std;
#define Up(i,a,b) for(int i = a; i <= b; i++)
int main()
{
ios::sync_with_stdio(false);
int n;
cin >> n;
int maxans = -1e9, minans = 1e9;
int a[n+1];
Up(i,1,n)
{
cin >> a[i];
maxans = max(maxans,a[i]);
minans = min(minans,a[i]);
}
double middle = n&1 ? a[(n+1)/2] : (a[n/2]+a[n/2+1])/2.0; //n&1相当于n%2,用来判断奇偶性
if(middle-(int)middle == 0) //判断中位数是不是整数
{
printf("%d %d %d\n", maxans, (int)middle, minans); //中位数强制转换成int再进行输出
}
else
{
printf("%d %.1f %d\n", maxans, middle, minans);
}
return 0;
}