📅  最后修改于: 2023-12-03 15:42:12.516000             🧑  作者: Mango
本文将介绍GATE CS 2020考试中的问题2,它是一道编程题,需要编写一个Python程序。
有$N$个人参加考试,考试包含$M$道题目,每道题目有$K$个选项。在考试期间,每个人都会有一个随机的答案,每个选项的答案被选中的次数 $C_i,\ 1 \leq i \leq K$, 将被用于计算成绩。
计算每个人的得分并排序。得分按照以下方式计算:一个人的答案与每个选项的答案进行比较,如果它们相同,则该选项将增加 $C_i$ 分。计算得分后,按得分从高到低排列。
第一行包含三个空格分隔的整数 $N, M$ 和 $K$,表示学生人数,考试的问题数量和每个问题的选项数。
接下来的$N$行,描述了每个学生的答案:
接下来的$M$行包含每个问题的选项数 $K$:
第1到第N的行,每行包含一个整数,表示该学生的得分。
2 2 2
1 1
2 2
1 1
2 2
200
200
共有2个学生和2个问题。题目共有2个选项。问题1的答案是1和2,问题2的答案是1和2,每个选项都被选中了一次。
n, m, k = map(int, input().split())
a = []
for i in range(n):
answer = list(map(int, input().split()))
a.append(answer)
c = []
for i in range(m):
choices = list(map(int, input().split()))
c.append(choices)
scores = []
for i in range(n):
score = 0
for j in range(m):
selected_answer = a[i][j]
score += c[j][selected_answer-1]
scores.append(score)
for s in scores:
print(s)
返回的代码片段应该按照markdown标记显示,如:
```python
# Python代码片段
## 实现思路
程序首先读取输入的值,然后将每个学生的答案和每个选项被选择的次数存储在两个数组中。
接下来,对于每个学生,程序会遍历每个问题的答案,累加该题的选择答案的分数,为该学生计算总分并存储在一个数组中。
最后,按得分从高到低排列,并输出每个学生的得分。