j055 - 11777 - Automate the Grades
題目描述
題目要求根據七個輸入分數(Term 1, Term 2, Final, Attendance, Class Test 1, Class Test 2, Class Test 3)計算學生的總分,並根據總分給出對應的字母等級(A, B, C, D, F)。班級考試的評分方式是取最好的兩個考試成績的平均值。
解題思路
程式首先讀取測資數量 n。然後,對於每個測資,程式讀取七個分數。計算總分時,將 Term 1, Term 2, Final 和 Attendance 的分數直接加總。對於班級考試,程式找到最好的兩個分數,計算它們的平均值,並將其加到總分中。最後,程式根據總分判斷對應的字母等級,並輸出結果。
複雜度分析
- 時間複雜度: O(n),其中 n 是測資數量。對於每個測資,程式執行常數次操作,包括讀取輸入、計算總分和判斷等級。
- 空間複雜度: O(1),程式使用固定大小的陣列
a來儲存輸入分數,陣列大小為 7,不隨測資數量變化。
程式碼
#include <iostream>
using namespace std;
int a[7],n;
int main(){
cin.tie(0); ios::sync_with_stdio(0);
cin >> n;
for(int ca=1;ca<=n;++ca){
int sum=0;
for(int i=0;i<7;++i){
cin >> a[i];
if(i<4)sum+=a[i];
}
sum+=(a[4]+a[5]+a[6]-min(a[4],min(a[5],a[6])))/2;
cout << "Case " << ca << ": ";
if(sum>=90){
cout << "A\n";
}
else if(sum>=80){
cout << "B\n";
}
else if(sum>=70){
cout << "C\n";
}
else if(sum>=60){
cout << "D\n";
}
else{
cout << "F\n";
}
}
}