五层循环,暴力求解

#include <cstdio>
#include <algorithm>

using namespace std;

const int INF = 0x3f3f3f3f;

int main()
{
int T; scanf("%d", &T);
while (T--) {
double average, n;
scanf("%lf %lf", &average, &n);
double total = average * n, maxans = 0, minans = INF;
for (int a = 0; a <= n; a++) {
for (int b = 0; b <= n - a; b++) {
for (int c = 0; c <= n - a - b; c++) {
for (int d = 0; d <= n - a - b - c; d++) {
for (int e = 0; e <= n - a - b - c - d; e++) {
double down = a * 85 + b * 80 + c * 75 + d * 70 + e * 60;
double up = a * 100 + b * 84 + c * 79 + d * 74 + e * 69;
if (a + b + c + d + e == n && down <= total && total <= up) {
double ans = a * 4 + b * 3.5 + c * 3 + d * 2.5 + e * 2;
maxans = max(maxans, ans);
minans = min(minans, ans);
}
}
}
}
}
}
printf("%.4lf %.4lf\n", minans / n, maxans / n);
}
return 0;
}