为什么long double会有精度误差,而double可以正常AC
查看原帖
为什么long double会有精度误差,而double可以正常AC
178111
南门阳德楼主2022/2/16 17:32

代码:

#include <bits/stdc++.h>
using namespace std;

long long arr[100005];
int main() {
    long long n, m;
    cin >> n >> m;
    cout << fixed << setprecision(2);
    for (int i=1; i<=n; i++) cin >> arr[i];
    sort(arr+1, arr+n+1);
    long long sum = 0;
    for (int i=1; i<=n; i++) {
        if (arr[i]*(i-1) >= sum) sum += m;
    }
    cout << (double)sum/n << ' ';
    sum = 0;
    for (int i=n; i>=1; i--) {
        if (arr[i]*(n-i) >= sum) sum += m;
    }
    cout << (double)sum/n;
    return 0;
}

这份代码可以AC本题,而将double均换为long double后会WA掉第16个点,获得70分。

2022/2/16 17:32
加载中...