Задача Задача №2421327
А
А
Давайте разберем задачу по шагам.
Задача
Когда нам даны правильные ответы и ответы студентов, мы хотим найти все пары студентов, чьи ответы считаются похожими по критериям:
- Более половины правильных ответов совпадают.
- Более половины неправильных ответов совпадают.
Входные данные
- n — количество вопросов в тесте (1 ≤ n ≤ 100).
- Строка правильных ответов длиной n, состоящая из символов «A», «B», «C», «D».
- m — количество студентов, которые писали тест (1 < m < 100).
- m строк с ответами студентов.
Выходные данные
- Первая строка — количество пар похожих работ.
- Далее — сами пары студенческих работ, каждая пара на отдельной строке.
Алгоритм решения
- Считываем количество вопросов и правильные ответы.
- Считываем количество студентов и их ответы.
- Для каждой пары студентов проверяем условия схожести:
- Считаем количество совпадающих правильных и неправильных ответов.
- Определяем, если эти количества превышают половину от общего числа вопросов.
- Если условия выполняются, фиксируем пару.
Пример реализации на Python
n = int(input())
correct_answers = input().strip()
m = int(input())
student_answers = [input().strip() for _ in range(m)]
similar_pairs = []
for i in range(m):
for j in range(i + 1, m):
correct_count = sum(1 for k in range(n) if student_answers[i][k] == correct_answers[k])
wrong_count = sum(1 for k in range(n) if student_answers[i][k] != correct_answers[k])
correct_count_other = sum(1 for k in range(n) if student_answers[j][k] == correct_answers[k])
wrong_count_other = sum(1 for k in range(n) if student_answers[j][k] != correct_answers[k])
if (correct_count > n / 2 and correct_count_other > n / 2 and
(correct_count + wrong_count) - (correct_count_other + wrong_count_other) > (n / 2)):
similar_pairs.append((i + 1, j + 1))
print(len(similar_pairs))
for pair in similar_pairs:
print(pair[0], pair[1])
Объяснение кода
- Сначала мы считываем число вопросов и правильные ответы.
- Затем считываем ответы студентов и сохраняем их в список
student_answers. - Далее с помощью вложенных циклов проходим по всем парам студентов. Применяем условия для определения количества правильных и неправильных ответов относительно правильных ответов.
- Если обе работы схожи по заданным критериям, добавляем пару в список.
- В конце выводим количество схожих пар и сами пары.
Этот подход обеспечит корректное определение всех схожих работ среди студентов. Вы можете протестировать это решение с примерами, соответствующими формату ввода.