Подборка задач с решениями - 41

  • Категория: Python
  • Дата публикации: 2022-02-07
  • Опубликовано на сайте: Stepik

Задача 1:

На спутнике «Восход» установлен прибор для измерения солнечной активности. Каждую минуту он передаёт в обсерваторию по каналу связи положительное целое число — количество энергии солнечного излучения. Для правильного анализа результатов нет необходимости держать повторяющиеся данные. Напишите программу, которая выводит максимальное количество показаний спутника, при удалении которых результат будет правильно проанализирован.

Формат входных данных

На вход программе подаётся одна строка, содержащая числа – показания спутника «Восход». Числа указываются через пробел и не содержат ведущих нулей.

Формат выходных данных

Программа должна вывести максимальное количество показаний, после удаления которых анализ результатов будет произведен верно.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT

sputnik = input().split()
print(len(sputnik) - len(set(sputnik)))

Задача 2:

Тимур и Руслан играют в игру города. Они очень любят эту игру и знают много городов, особенно Тимур, однако к концу игры ввиду своего возраста забывают, какие города уже называли.

Напишите программу, считывающую информацию об игре и сообщающую ребятам, что очередной город назван повторно.

Формат входных данных

На вход программе в первой строке подаётся натуральное число n – количество названных городов, в последующих n строках вводятся названные города и ещё одна строка с новым, только что названым городом.

Формат выходных данных

Программа должна вывести OK, если этот город ещё не вспоминали, и REPEAT, если город уже был назван.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT

cites = {input() for _ in range(int(input()))}
print(('OK', 'REPEAT')[input() in cites])

Задача 3:

Руслан получил в конце учебного года список литературы на лето. Теперь ему надо выяснить, какие книги из этого списка у него есть. У Руслана на компьютере в текстовом файле записаны все книги из его домашней библиотеки в случайном порядке.

Напишите программу, определяющую для каждой книги из списка на прочтение, есть она у Руслана или нет.

Формат входных данных

На вход программе в первой строке подается натуральное число m — количество книг в домашней библиотеке Руслана. Во второй строке записано натуральное число n — количество книг в списке на лето. Далее идут m строк с названиями книг из домашней библиотеки и nnn строк названий из списка на лето.

Формат выходных данных

Программа должна вывести n строк, в каждой из которых написано слово YES, если книга найдена в библиотеке, и NO, если нет.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT

m, n = int(input()), int(input())
dom = set([input() for _ in range(m)])
for i in range(n):
    print('NO' if input() not in dom else 'YES')

Задача 4:

Каждый день Тимур решает ровно две сложные математические задачи. Решая первую задачу, он записывает на первом листочке все числа, которые в ней встречаются. Далее он делает паузу и берется за вторую задачу. Затем записывает на втором листочке все числа, которые в ней встречаются. После этого он берет еще один листок и выписывает на него все совпадающие числа из первых двух листочков. Если такие числа есть, день удался, если общих чисел нет, Тимур считает день неудачным.

Напишите программу, которая находит общие числа двух листочков или сообщает, что день не удался.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT

day = set(input().split()) & set(input().split())
print(*sorted(day, key=int, reverse=True) if day else ['BAD DAY'])

Задача 5:

При приёме новых сотрудников в онлайн-школу её руководитель тестирует не только профессиональные качества кандидата, но и его память.

Кандидату показывают ненадолго несколько различных чисел, а затем кандидат должен их назвать. Причем неважно, в каком порядке он их вспоминает, и повторяется он или нет, главное он должен назвать все числа, не добавляя лишних.

Напишите программу, определяющую, успешно ли прошел кандидат тестирование памяти.

Формат входных данных

На вход программе подаются две строки с числами: в первой строке показанные кандидату, а во второй ответы кандидата.

Формат выходных данных

Программа должна вывести YES, если кандидат прошел испытание и его можно брать на работу и NO в противном случае.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT

print(('NO', 'YES')[set(input().split()) == set(input().split())])

Задача 6:

Каждый ученик, обучающийся в онлайн-школе изучает либо математику, либо информатику, либо оба эти предмета. У руководителя школы есть списки изучающих каждый предмет.

Напишите программу, позволяющую руководителю выяснить, сколько учеников изучает только математику.

Формат входных данных

На вход программе в первых двух строках подаются числа m и n – количества учеников, изучающих математику и информатику соответственно. Далее идут m строк — фамилии учеников, которые изучают математику и n строк с фамилиями учеников, изучающих информатику.

Формат выходных данных

Программа должна вывести количество учеников, которые изучают только математику.

Примечание. Гарантируется, что среди учеников школы нет однофамильцев.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT

m, n = int(input()), int(input())
a = set(input() for _ in range(m))
b = set(input() for _ in range(n))
print(len(a - b))

Задача 7:

Каждый ученик, обучающийся в онлайн-школе, изучает либо математику, либо информатику, либо оба этих предмета. У руководителя школы есть списки изучающих каждый предмет.

Напишите программу, позволяющую руководителю выяснить, сколько учеников изучает только один предмет.

Формат входных данных

На вход программе в первых двух строках подаются числа m и n – количества учеников, изучающих математику и информатику соответственно. Далее идут m строк — фамилии учеников, которые изучают математику и n строк с фамилиями учеников, изучающих информатику.

Формат выходных данных

Программа должна вывести количество учеников, которые изучают только один предмет. Если таких учеников не окажется, то необходимо вывести NO.

Примечание. Гарантируется, что среди учеников школы нет однофамильцев.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT

m, n = int(input()), int(input())
s = {input() for _ in range(m)} ^ {input() for _ in range(n)}
print('NO' if len(s) == 0 else len(s))

Задача 8:

Руководитель онлайн-школы и его помощник составили списки учеников их школы.

Напишите программу, которая выведет все фамилии учеников, которые вспомнили руководитель и его помощник.

Формат входных данных

На вход программе в первой строке подаются фамилии, записанные руководителем школы, а на второй строке - помощником руководителя. Фамилии указываются через пробел.

Формат выходных данных

Программа должна вывести все фамилии учеников, отсортированных в лексикографическом порядке, записанные руководителем и его помощником.

Примечание. Гарантируется, что среди учеников школы нет однофамильцев.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT

print(*sorted(set(input().split()) |set(input().split())))

Задача 9:

Каждый ученик, обучающийся в онлайн-школе, изучает либо математику, либо информатику, либо оба этих предмета. У руководителя школы есть списки учеников, изучающих каждый предмет. Случайно списки всех учеников перемешались.

Напишите программу, которая позволит руководителю выяснить, сколько учеников изучает только один предмет.

Формат входных данных

На вход программе в первых двух строках подаются числа m и n – количества учеников, изучающих математику и информатику соответственно. Далее идут m + n строк — фамилии учеников, изучающих математику и информатику, в произвольном порядке.

Формат выходных данных

Программа должна вывести количество учеников, которые изучают только один предмет. Если таких учеников не окажется, то необходимо вывести NO.

Примечание. Гарантируется, что среди учеников школы нет однофамильцев.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT

n = int(input()) + int(input())
print(2 * len(set([input() for _ in range(n)])) - n or 'NO')

Задача 10:

Руководителю онлайн-школы захотелось узнать, кто из его учеников присутствовал на всех уроках с начала учебного года. Для каждого урока есть листок со списком присутствовавших учеников.

Напишите программу, определяющую фамилии учеников, которые присутствовали на всех уроках.

Формат входных данных

На вход программе в первой строке дается число m – количество уроков, проведенных с начала учебного года. Далее идёт m блоков строк, описывающих листки с фамилиями. На первой строке каждого блока указано количество фамилий ni, затем идёт ni строчек с фамилиями тех, кто был на уроке i-ом уроке.

Формат выходных данных

Программа должна вывести фамилии учеников, которые были на всех уроках, отсортированных в лексикографическом порядке. Каждая фамилия должна быть записана на отдельной строке.

Примечание 1. Гарантируется, что среди учеников школы нет однофамильцев.

Примечание 2. Гарантируется, что хотя бы один ученик был на всех уроках.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT

m = int(input())
a = set([input() for _ in range(int(input()))])
for i in range(m - 1):
    a &= set([input() for _ in range(int(input()))])
print(*sorted(a), sep='\n')

Задача 11:

Ученики 10 класса онлайн-школы получили задание прочесть на летних каникулах три книги:

  • "Что такое математика?";
  • "Математическая составляющая";
  • "100 гениальных идей по математике".

Оказалось, что n учеников прочитали первую книгу, m учеников — вторую, k учеников — третью. Также известно, что x учеников прочли первую или вторую, или обе эти книги, y учеников — вторую или третью, или обе, z учеников — первую и третью, или хотя бы одну из этих двух книг. Полностью выполнили задание только t учеников. Всего в 10 классе учится a учеников. Напишите программу, которая выводит сколько учеников:

  • прочитали только одну книгу;
  • прочитали две книги;
  • не прочитали ни одной из рекомендованных книг.

Формат входных данных

На вход программе подаются числа n, m, k, x, y, z, t каждое на отдельной строке.

Формат выходных данных

Программа должна вывести три числа в соответствии с условием задачи, каждое на отдельной строке.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT

n, m, k, x, y, z, t, a = (int(input()) for _ in range(8))
one = n + m - x - t
two = n + k - z - t
three = m + k - t - y
first = n - one - two - t + m - one - three - t + k - two - three - t
second = one + two + three
last = a - (first + second + t)
print(first,second, last, sep = '\n')

Задача 12:

На летних каникулах ученики онлайн-школы решили отдохнуть. В результате n учеников школы поехали отдыхать на море, m учеников съездили в деревню, а k учеников сходили в горы. Оказалось, что и в деревне, и на море были x учеников, а в деревне и в горах — y учеников. Побывать и в горах, и на море не удалось никому.

Напишите программу для определения количества учеников в школе, если никто не смог посетить все три места сразу, а z учеников писали ДВИ по математике для поступления в МГУ, и никуда не ездили.

Формат входных данных

На вход программе подаются числа n, m, k, x, y, z каждое на отдельной строке.

Формат выходных данных

Программа должна вывести одно число в соответствии с условием задачи.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT

n, m, k, x, y, z = [int(input()) for _ in range(6)]
result = n + m + k - x - y + z
print(f'{result}')

Задача 13:

На вход программе подаются две строки текста, содержащие числа. Напишите программу, которая выводит все числа в порядке возрастания, которые есть как в первой строке, так и во второй.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT

print(*sorted(set([int(i) for i in input().split()]).intersection(set([int(i) for i in input().split()]))))

Задача 14:

Используя генератор множеств, дополните приведенный код, так чтобы получить множество, содержащее уникальные значения списка items. Результат вывести на одной строке, в упорядоченном виде, разделяя элементы одним символом пробела. Обратите внимание, некоторые элементы списка – числа, а некоторые – строки, при этом строки необходимо трактовать как числа.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT

items = [10, '30', 30, 10, '56', 34, '12', 90, 89, 34, 45, '67', 12, 10, 90, 23, '45', 56, '56', 1, 5, '6', 5]
myset = {int(c) for c in items}
print(*sorted(myset))

Задача 15:

Вводятся вещественные числа в одну строчку через пробел. Необходимо на их основе сформировать множество s. Вывести на экран значения множества s в порядке возрастания в одну строчку через пробел.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT

print(*sorted(set(map(float, input().split()))))

Задача 16:

Вводится текст в одну строку, слова разделены пробелом. Необходимо подсчитать число уникальных слов (без учета регистра) в этом тексте. Результат (число уникальных слов) вывести на экран.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT print(len(set(input().lower().split())))

Задача 17:

Вводится строка, содержащая латинские символы, пробелы и цифры. Необходимо выделить из нее все неповторяющиеся цифры (символы от 0 до 9) и вывести на экран в одну строку через пробел их в порядке возрастания значений. Если цифры отсутствуют, то вывести слово НЕТ.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT res = sorted(set([i for i in input() if i.isdigit()])) print(*res if len(res) > 0 else ['НЕТ'])

Задача 18:

В ночном клубе фиксируется список гостей. Причем гости могут выходить из помещения, а затем, снова заходить. Тогда их имена фиксируются повторно. На вход программы поступает такой список (каждое имя записано с новой строки). Требуется подсчитать общее число гостей, которые посетили ночной клуб. Полагается, что гости имеют уникальные имена. На экран вывести общее число гостей клуба.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT

import sys
lst_in = list(map(str.strip, sys.stdin.readlines()))
print(len(set(lst_in)))

Задача 19:

В аккаунте youtube Сергея прокомментировали очередное видео. Некоторые посетители оставляли несколько комментариев. Требуется по списку комментариев определить уникальное число комментаторов. Комментарии поступают на вход программы в формате:

имя 1: комментарий 1 имя 2: комментарий 2 ... имя N: комментарий N

Также полагается, что имена у разных комментаторов не совпадают. Вывести на экран общее число уникальных комментаторов.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT

import sys
print(len(set(map(lambda i: i.split(':')[0], sys.stdin.readlines()))))

Задача 20:

Пользователь с клавиатуры вводит названия городов, пока не введет букву q. Определить общее уникальное число городов, которые вводил пользователь. На экран вывести это число. Из коллекций при реализации программы использовать только множества.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT a, s = input(), set() while a != "q": s.add(a) a = input() print(len(s))