题目:http://118.190.20.162/view.page?gpid=T89
#include<iostream>
#include<vector>
#include<iomanip>
#include<cmath>
using namespace std;
using gg = long long;
int main()
{
gg n, x, first, end, max, min, len;
double mid;
vector<gg> v;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> x;
v.push_back(x);
}
first = *(v.begin());
end = *(v.end() - 1);
len = v.size();
if (len % 2 == 0)
{
mid = (v[n / 2] + v[n / 2 - 1]) / 2.0;
}
else
{
mid = v[n / 2];
}
if (first - end > 0)
{
max = first;
min = end;
}
else if (first - end < 0)
{
max = end;
min = first;
}
else
{
max = end;
min = end;
}
if (abs(mid - floor(mid)) < 1e-6) // 原数与向下取整的相减,若小于1e-6则为整数
{
cout << max << " " << floor(mid) << " " << min;
}
else
{
cout << max << " " << fixed << setprecision(1) << mid << " " << min;
}
}
最后测试结果为85分,有的测试用例没有通过。
我的想法是问题出现在中位数的计算上