这个问题可以通过简单的数学计算和条件判断来解决。我们首先根据给定的公式计算总分数,然后根据总分数判断等级。
以下是使用C++的代码实现:
#include <iostream>
#include <cmath>
using namespace std;
string getGrade(int score) {
if (score == 1000000) return "EXC";
if (score >= 980000) return "SSS";
if (score >= 950000) return "SS";
if (score >= 900000) return "S";
if (score >= 850000) return "A";
if (score >= 800000) return "B";
if (score >= 700000) return "C";
if (score >= 500000) return "D";
return "E";
}
int main() {
int T;
cin >> T;
for (int t = 1; t <= T; ++t) {
int n, P, G, g, B;
cin >> n >> P >> G >> g >> B;
int score = round(1000000.0 * (P + 0.7 * G + 0.4 * g + 0.1 * B) / n);
cout << "Case " << t << ": " << score << " " << getGrade(score) << "\n";
}
return 0;
}
在这段代码中,我们首先读取测试数据的数量。然后,对于每组测试数据,我们读取总音符数、Perfect的个数、Great的个数、Good的个数和Bad的个数,然后根据给定的公式计算总分数。最后,我们根据总分数判断等级,并输出结果。