将实数转化为精度更高的整数来运算可以更好控制精度。
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
#include<iomanip>
using namespace std;
typedef long long ll;
int main()
{
int p = 0, r = 0;
int n, d;
double low;
cin >> n >> low >> d;
ll llo = low * 10000; //整数的精度更高,乘10000相当于保留小数点后四位
for (int k = 1; k <= n; k++)
{
int t, ans = 0;
cin >> t;
for (int i = 1; i <= t; i++) {
double tem;
cin >> tem;
ll elec = tem * 10000; //同样地
if (elec < llo) ans++;
}
if (ans > t / 2 && t > d) {
r++;
}
else if (ans > t / 2) p++;
}
cout << fixed << setprecision(1) << p * 100.0 / n << '%' << ' ' << fixed << setprecision(1) << r * 100.0 / n << '%' << endl;
return 0;
}