📜  门| GATE CS 2020 |问题2(1)

📅  最后修改于: 2023-12-03 15:42:12.516000             🧑  作者: Mango

门| GATE CS 2020 |问题2

本文将介绍GATE CS 2020考试中的问题2,它是一道编程题,需要编写一个Python程序。

题目描述

有$N$个人参加考试,考试包含$M$道题目,每道题目有$K$个选项。在考试期间,每个人都会有一个随机的答案,每个选项的答案被选中的次数 $C_i,\ 1 \leq i \leq K$, 将被用于计算成绩。

计算每个人的得分并排序。得分按照以下方式计算:一个人的答案与每个选项的答案进行比较,如果它们相同,则该选项将增加 $C_i$ 分。计算得分后,按得分从高到低排列。

输入

第一行包含三个空格分隔的整数 $N, M$ 和 $K$,表示学生人数,考试的问题数量和每个问题的选项数。

接下来的$N$行,描述了每个学生的答案:

  • 每行包含$M$个空格分隔的整数$a_1,a_2,...,a_M(1≤a_i≤K)$,表示该学生对每个问题选择的选项。

接下来的$M$行包含每个问题的选项数 $K$:

  • 每行包含K个空格分隔的整数$c_1,c_2,...,c_K(1≤c_i≤100)$,表示每个选项被选择的次数。
输出

第1到第N的行,每行包含一个整数,表示该学生的得分。

举例
输入
2 2 2
1 1
2 2
1 1
2 2
输出
200
200
解释

共有2个学生和2个问题。题目共有2个选项。问题1的答案是1和2,问题2的答案是1和2,每个选项都被选中了一次。

  • 对于第一个学生,他选择了1和1,他的得分为100 + 100 = 200。
  • 对于第二个学生,他选择了2和2,他的得分为100 + 100 = 200。
Python程序
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代码片段

## 实现思路

程序首先读取输入的值,然后将每个学生的答案和每个选项被选择的次数存储在两个数组中。

接下来,对于每个学生,程序会遍历每个问题的答案,累加该题的选择答案的分数,为该学生计算总分并存储在一个数组中。

最后,按得分从高到低排列,并输出每个学生的得分。