Входные данные для всех задач записаны в файле input.txt
,
результат работы нужно вывести в файл output.txt
.
Выведите все строки данного файла в обратном порядке.
Последняя строка входного файла обязательно заканчивается символом '\n'
.
Ввод | Вывод |
---|---|
Beautiful is better than ugly. |
Complex is better than complicated. |
Выведите в обратном порядке содержимое всего файла полностью.
Ввод | Вывод |
---|---|
Beautiful is better than ugly. |
|
В выходной файл выведите все строки наибольшей длины из входного файла, не меняя их порядок.
В данной задаче удобно считать список строк входного файла целиком при помощи
метода readlines()
.
Ввод | Вывод |
---|---|
One |
Twenty one |
Определите, есть ли во входном файле символ '@'
. Выведите
слово YES
или NO
.
Входной файл может быть очень большим, поэтому считывать файл нужно посимвольно.
Ввод | Вывод |
---|---|
Valid email: |
YES |
Hello, world! |
NO |
Дан файл, каждая строка которого может содержать одно или несколько целых чисел, разделенных одним или несколькими пробелами.
Вычислите сумму чисел в каждой строке и выведите эту сумму (для каждой строки выводится сумма чисел в этой строке).
В данной задаче удобно считывать данные построчно.
Ввод | Вывод |
---|---|
2 2 |
4 |
В файле могут быть записаны десятичные цифры и все, что угодно. Числом назовем последовательность цифр, идущих подряд (т.е. число всегда неотрицательно).
Вычислите сумму всех чисел, записанных в файле. В данной задаче удобно считывать данные посимвольно.
Ввод | Вывод |
---|---|
123 |
600 |
Дан файл. Определите сколько в нем букв (латинского алфавита), слов (последовательность букв латинского алфавита), строк. Выведите три найденных числа в формате, приведенном в примере.
Для экономии памяти читайте файл посимвольно, то есть не сохраняя целиком в памяти файл или отдельные его строки.
Ввод | Вывод |
---|---|
Beautiful is better than ugly. |
Input file contains: |
Зашифруйте данный текстовый файл шифром Цезаря, при этом символы первой строки файла должны циклически сдвигаться на 1, второй строки — на 2, третьей строки — на три и т.д.
В этой задаче удобно считывать файл построчно, шифруя каждую строку в отдельности.
Ввод | Вывод |
---|---|
Hello |
Ifmmp |
Даны две строки. Определите, можно ли получить одну из другой перестановкой букв.
Программа получает на вход две строки, содержащие только ASCII-символы, не содержащие пробелы.
Программа должна вывести слово YES
, если одна строка может быть получена из другой перестановкой букв или NO
.
Ввод | Вывод |
---|---|
eleven_plus_two |
YES |
Eleven_plus_two |
NO |
Саша и Катя учатся в начальной школе. Для изучения арифметики при этом используются карточки, на которых написаны цифры (на каждой карточке написана ровно одна цифра). Однажды они пришли на урок математики, и Саша, используя все свои карточки, показал число A, а Катя показала число B. Учитель тогда захотел дать им такую задачу, чтобы ответ на нее смогли показать и Саша, и Катя, каждый используя только свои карточки. При этом учитель хочет, чтобы искомое число было максимально возможным.
Во входном файле записано два целых неотрицательных числа A и B (каждое число в одной строке). Длина каждого из чисел не превосходит 100000 цифр.
Выведите одно число — максимальное целое число, которое можно составить используя как цифры первого числа, так и цифры второго числа. Если же ни одного такого числа составить нельзя, выведите -1.
Ввод | Вывод |
---|---|
280138 |
8810 |
123 |
-1 |
Задача такого рода предлагалась на ЕГЭ по информатике в 2010 году. Решение должно использовать \(O(1)\) памяти, в частности, это означает, что чтение данных должно быть посимвольным.
Дана строка, состоящая только из заглавных латинский букв. Используя все или некоторые символы этой строки составьте строку максимальной длины, являющуюся палиндромом (то есть одинаково читающуюся слева направо и справа налево). Если таких строк несколько, то выведите минимальный в лексикографическом порядке палиндром.
Ввод | Вывод |
---|---|
PARALLELOGRAM |
ALRARLA |
ONE |
E |
В Государственную Думу Федерального Собрания Российской Федерации выборы производятся по партийным спискам. Каждый избиратель указывает одну партию, за которую он отдает свой голос. В Государственную Думу попадают партии, которые набрали не менее 7% от числа голосов избирателей.
Дан список партий и список голосов избирателей. Выведите список партий, которые попадут в Государственную Думу.
В первой строке входного файла написано слово PARTIES:
.
Далее идет список партий, участвующих в выборах.
Затем идет строка, содержащая слово VOTES:
.
За ним идут названия партий, за которые проголосовали избиратели,
по одному названию в строке. Названия могут быть только строками
из первого списка.
Программа должна вывести названия партий, получивших не менее 7% от числа голосов в том порядке, в котором они следуют в первом списке.
Ввод | Вывод |
---|---|
PARTIES: Party one Party two Party three VOTES: Party one Party one Party three Party one Party one Party three Party two Party one Party three Party three Party one Party one Party three Party three Party one |
Party one Party three |
Формат входных данных аналогичен предыдущей задаче. Выведите список всех партий, участвовавших в выборах, отсортировав его в порядке убывания количества голосов избирателей, а при равном количестве голосов - в лексикографическом порядке.
Ввод | Вывод |
---|---|
PARTIES: Party one Party two Party three VOTES: Party one Party two Party three Party two Party three |
Party three Party two Party one |
В выборах Президента Российской Федерации побеждает кандидат, набравший свыше половины числа голосов избирателей. Если такого кандидата нет, то во второй тур выборов выходят два кандидата, набравших наибольшее число голосов.
Каждая строка входного файла содержит имя кандидата, за которого отдал голос один избиратель. Известно, что общее число кандидатов не превосходит 20, но в отличии от предыдущих задач список кандидатов явно не задан.
Если есть кандидат, набравший более 50% голосов, программа должна вывести его имя. Если такого кандидата нет, программа должна вывести имя кандидата, занявшего первое место, затем имя кандидата, занявшего второе место.
Ввод | Вывод |
---|---|
Полуэкт Варфоломеев Варфоломей Полуэктов Полуэкт Варфоломеев |
Полуэкт Варфоломеев |
Полуэкт Варфоломеев Варфоломей Виссарионов Виссарион Полуэктов Варфоломей Виссарионов Варфоломей Виссарионов Полуэкт Варфоломеев |
Варфоломей Виссарионов Полуэкт Варфоломеев |
Статья 83 закона “О выборах депутатов Государственной Думы Федерального Собрания Российской Федерации” определяет следующий алгоритм пропорционального распределения мест в парламенте.
Необходимо распределить 450 мест между партиями, участвовавших в выборах. Сначала подсчитывается сумма голосов избирателей, поданных за каждую партию и подсчитывается сумма голосов, поданных за все партии. Эта сумма делится на 450, получается величина, называемая “первое избирательное частное” (смысл первого избирательного частного - это количество голосов избирателей, которое необходимо набрать для получения одного места в парламенте).
Далее каждая партия получает столько мест в парламенте, чему равна целая часть от деления числа голосов за данную партию на первое избирательное частное.
Если после первого раунда распределения мест сумма количества мест, отданных партиям, меньше 450, то оставшиеся места передаются по одному партиям, в порядке убывания дробной части частного от деления числа голосов за данную партию на первое избирательное частное. Если же для двух партий эти дробные части равны, то преимущество отдается той партии, которая получила большее число голосов.
На вход программе подается список партий, участвовавших в выборах. Каждая строка входного файла содержит название партии (строка не содержащая пробелы), затем, через пробел, количество голосов, полученных данной партией – число, не превосходящее 108.
Программа должна вывести названия всех партий и количество голосов в парламенте, полученных данной партией. Названия необходимо выводить в том же порядке, в котором они шли во входных данных.
Ввод | Вывод |
---|---|
Party_One 100000 Party_Two 200000 Party_Three 400000 |
Party_One 64 Party_Two 129 Party_Three 257 |
Задача такого рода предлагалась на ЕГЭ по информатике в 2009 году. Решение должно использовать \(O(1)\) памяти, в частности, это означает, что чтение данных должно быть построчным, нельзя создавать списки, размер которых был бы пропорционален числу строк во входном файле.
Для поступления в вуз абитуриент должен предъявить результаты трех экзаменов в виде ЕГЭ, каждый из них оценивается целым числом от 0 до 100 баллов. При этом абитуриенты, набравшие менее 40 баллов (неудовлетворительную оценку) по любому экзамену из конкурса выбывают. Остальные абитуриенты участвуют в конкурсе по сумме баллов за три экзамена.
В конкурсе участвует N человек, при этом количество мест равно K. Определите проходной балл, то есть такое количество баллов, что количество участников, набравших столько или больше баллов не превосходит K, а при добавлении к ним абитуриентов, набравших наибольшее количество баллов среди непринятых абитуриентов, общее число принятых абитуриентов станет больше K.
Программа получает на вход количество мест K. Далее идут строки с информацией об абитуриентах, каждая из которых состоит из фамилии и имени (текстовые строки через пробел) и трех чисел от 0 до 100, разделенных пробелами.
Программа должна вывести проходной балл в конкурсе. Выведенное значение должно быть минимальным баллом, который набрал абитуриент, прошедший по конкурсу.
Также возможны две ситуации, когда проходной балл не определен.
Если будут зачислены все абитуриенты, не имеющие неудовлетворительных оценок, программа должна вывести число 0.
Если количество абитуриентов, имеющих равный максимальный балл больше чем K, программа должна вывести число 1.
Ввод | Вывод |
---|---|
5 Иванов Сергей 70 70 70 Сергеев Петр 100 100 0 Петров Василий 70 60 70 Васильев Андрей 70 60 70 Андреев Денис 100 30 100 Денисов Роман 50 50 50 Романов Григорий 60 70 70 Григорьев Станислав 50 50 50 Станиславский Иван 40 40 40 |
200 |
1 Иванов Сергей 40 40 40 Сергеев Петр 100 100 39 |
0 |
1 Иванов Сергей 60 60 60 Сергеев Петр 100 40 40 |
1 |
Задача такого рода предлагалась на ЕГЭ по информатике в 2009 году. Решение должно использовать \(O(1)\) памяти, в частности, это означает, что чтение данных должно быть построчным, нельзя создавать списки, размер которых был бы пропорционален числу строк во входном файле.
В условиях предыдущей задачи определите полупроходной балл, то есть такое значение балла, что количество абитуриентов, набравших балл выше полупроходного, меньше K, а количество абитурентов, набравших балл выше или равный полупроходному, больше K.
Программа должна вывести значение полупроходного балла, если полупроходного балла не существует, программа должна вывести одно число 0.
Ввод | Вывод |
---|---|
5 Иванов Сергей 70 70 70 Сергеев Петр 100 100 0 Петров Василий 70 60 70 Васильев Андрей 70 60 70 Андреев Денис 100 30 100 Денисов Роман 50 50 50 Романов Григорий 60 70 70 Григорьев Станислав 50 50 50 Станиславский Иван 40 40 40 |
150 |
1 Иванов Сергей 50 50 50 Сергеев Петр 100 100 100 Петров Иван 100 0 100 |
0 |
Задача такого рода предлагалась на ЕГЭ по информатике в 2009 году. Решение должно использовать \(O(1)\) памяти, в частности, это означает, что чтение данных должно быть построчным, нельзя создавать списки, размер которых был бы пропорционален числу строк во входном файле.
В олимпиаде участвовало N человек, каждый из которых мог набрать от 0 до 100 баллов. По положению об олимпиаде жюри может наградить не более 45% от числа участников, округляя их число до целого при необходимости вниз.
При этом если последний участник, попавший в 45% набирает столько же баллов, сколько первый участник, не попавший в 45%, то решение по этим участникам, и всем участникам, набравшим такой балл принимается следующим образом:
Все данные участники объявляются призерами, если набранный ими балл больше половины от максимально возможного балла.
Все эти участники не объявляются призерами, если набранный ими балл не больше половины от максимально возможного.
Программа получает на вход информацию об участниках олимпиады (один участник - в одной строке). Строка содержит имя участника (текстовая строка с произвольным числом пробелов) и набранный данным участником балл через пробел.
Программа должна вывести минимальный балл, который получил участник олимпиады, ставший ее призером.
Ввод | Вывод |
---|---|
Иванов Сергей 70 Сергеев Петр 30 Петров Василий 40 Васильев Андрей 80 Андреев Денис 50 Денисов Роман 90 Романов Иван 70 Иванов Григорий 60 Григорьев Сергей 100 |
70 |
Иванов Сергей 50 Сергеев Петр 70 Петров Василий 40 Васильев Андрей 10 Андреев Денис 50 Денисов Роман 20 Романов Иван 30 Иванов Григорий 70 Григорьев Сергей 100 |
70 |
Иванов Сергей 30 Сергеев Петр 60 Петров Василий 20 Васильев Андрей 100 Андреев Денис 30 Денисов Роман 80 Романов Иван 20 Иванов Григорий 40 Григорьев Сергей 10 |
40 |