c680 - 電腦閱卷 1
題目描述
題目要求模擬電腦閱卷,計算學生的選擇題成績。給定標準答案和學生的答案卡,計算答對題數,並根據題數和總題數計算學生的總分。需要處理答案卡超出題數、不足題數以及空白題的情況。
解題思路
程式首先讀取標準答案的長度 ans 和標準答案字串 ac。然後讀取學生數量 q,對於每個學生,讀取學生的答案字串 t。計算學生答對的題數 s,只考慮標準答案和學生答案的前 min(ans, tl) 個字元,其中 tl 是學生答案的長度。如果學生答案的字元與標準答案的字元相同,則答對題數加一。最後,計算學生的總分,公式為 100/ans * s,並輸出結果。
複雜度分析
- 時間複雜度: O(n*m),其中 n 是學生數量,m 是標準答案的長度。
- 空間複雜度: O(m),主要用於儲存標準答案字串。
程式碼
#include <iostream>
using namespace std;
int main(){
int ans,q;
while(cin >> ans){
char ac[ans];
for(int i=0;i<ans;++i)
cin >> ac[i];
string t;
cin >> q;
while(q--){
int s=0;
cin >> t;
int tl=t.length();
tl=min(tl,ans);
for(int i=0;i<tl;++i)
if(ac[i]==t[i])
++s;
cout << 100/ans*s << "\n";
}
}
}