/**
* 1.解題思路:錯誤是指錯選或者漏選。用異或運算來判斷乙個選項和正確選項是否匹配
* 如果是匹配的,那麼異或的結果應當是0;如果不匹配
* 那麼這個選項就是存在錯選或者漏選的情況
* 例如:設a為00001,b為00010,c為00100,d為01000,e為10000
* 如果給定的正確答案是ac,即10001,那麼如果給出的選項也是10001
* 異或的結果就是0;如果給出的選項是a或者ab,即00001或00011,異或之後不為0
* 就是錯選和漏選的~通過異或操作的結果,再用與運算就可以把錯選和漏選的選項找出來
* fullscore表示一道題滿分的分值;trueopt表示正確的選項,儲存的是正確選項二進位制的值
* 二進位制由hash給出分別是1,2,4,8,16;cnt是錯誤的次數,maxcnt是最大錯誤次數
* * 2.異或:如果a、b兩個值不相同,則異或結果為1。 如果a、b兩個值相同,異或結果為0
* **/
#include #include #include using namespace std;
int main() , opt[1010][110] = ;
char c;
scanf("%d %d", &n, &m);
//fullscore表示一道題滿分的分值;trueopt表示正確的選項,儲存的是正確選項二進位制的值
vectorfullscore(m), trueopt(m);
//cnt是錯誤的次數
vector> cnt(m, vector(5));
//一道題的滿分值 選項個數 正確選項個數
for (int i = 0; i < m; i++)
}for (int i = 0; i < n; i++)
//異或
int el = opt[i][j] ^ trueopt[j];
if (el)
if (el)
} else
}printf("%.1f\n", grade);
}//找出最大錯誤次數
for (int i = 0; i < m; i++)
for (int j = 0; j < 5; j++)
maxcnt = maxcnt > cnt[i][j] ? maxcnt : cnt[i][j];
if (maxcnt == 0) else }}
return 0;
}
1073 多選題常見計分法
批改多選題是比較麻煩的事情,有很多不同的計分方法。有一種最常見的計分方法是 如果考生選擇了部分正確選項,並且沒有選擇任何錯誤選項,則得到50 分數 如果考生選擇了任何乙個錯誤的選項,則不能得分。本題就請你寫個程式幫助老師批改多選題,並且指出哪道題的哪個選項錯的人最多。輸入格式 輸入在第一行給出兩個正...
1073 多選題常見計分法
1073 多選題常見計分法 20 分 批改多選題是比較麻煩的事情,有很多不同的計分方法。有一種最常見的計分方法是 如果考生選擇了部分正確選項,並且沒有選擇任何錯誤選項,則得到 50 分數 如果考生選擇了任何乙個錯誤的選項,則不能得分。本題就請你寫個程式幫助老師批改多選題,並且指出哪道題的哪個選項錯的...
1073 多選題常見計分法
批改多選題是比較麻煩的事情,有很多不同的計分方法。有一種最常見的計分方法是 如果考生選擇了部分正確選項,並且沒有選擇任何錯誤選項,則得到 50 分數 如果考生選擇了任何乙個錯誤的選項,則不能得分。本題就請你寫個程式幫助老師批改多選題,並且指出哪道題的哪個選項錯的人最多。輸入在第一行給出兩個正整數 n...