Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется написать программу, которая печатает "Hello, world!
" (без кавычек)
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется написать программу, которая печатает все цвета радуги на русском языке. Каждый цвет вывести в отдельной строке с большой буквы.
Цвета должны быть выведены в кодировке WINDOWS-1251
.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется написать программу, которая считывает имя и фамилию и выводит их в формате
Меня зовут [фамилия]
[имя] [фамилия]
Входные данные содержат два слова в разных строках: имя и фамилию.
Выходные данные должны содержать текст в описанном формате.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
В ДВФУ у каждого студента и сотрудника есть
персональный адрес электронной почты в домене dvfu.ru
.
Требуется написать программу, которая по заданным фамилии, имени и роли пользователя
создает адрес его электронной почты в формате [фамилия].[имя]@[роль].dvfu.ru
Входные данные содержат три слова в разных строках.
Выходные данные должны содержать одну строку — электронный адрес в описанном формате.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Ваша лодка потерпела крушение! Но вы и не против, сидите себе спокойно и каждые 10 минут выливаете за борт X литров воды. При этом каждую минуту через пробоину поступает Y литров воды. При условии, что в таком темпе вы никогда не вычерпаете воду полностью, сколько литров воды будет в вашей лодке через T минут?
Входные данные содержат целые числа X, Y и T, по одному числу в строке.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Сегодня к Оле в гости придет N одногруппников, из-за чего она решила приготовить N тортов. В ее распоряжении есть M грамм сахара. Поскольку Оля не хочет никого обидеть, в каждом торте должно быть одинаковое количество сахара. Какое максимальное количество сахара может содержать каждый торт?
Входные данные содержат числа M и N, каждое на новой строке.
Необходимо вывести единственное число — максимальное количество сахара.
1 < N, M < 10000
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Условный оператор — это просто! Верно?
Напишите программу, которая принимает на вход от пользователя одну строку.
Если пользователь ответил "Просто!
", "Easy!
" или "Einfach!
",
напечатайте в ответ улыбающийся смайл ":)
".
В ином случае — грустный смайл ":(
".
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется написать программу, которая определит тип предложения. Если в предложении есть вопросительный знак, то оно вопросительное. Если есть восклицательный, то предложение восклицательное. Если есть и то и другое, то оно вопросительно-восклицательное. Если ни того ни другого в предложении нет, то оно повествовательное. Если ко всему прочему в предложении есть хотя бы одна запятая, то оно еще и сложное.
Входные данные содержат предложение в кодировке CP1251
.
Выходные данные должны содержать тип предложения в кодировке CP1251
. Если предложение сложное, слово "сложное"
должно стоять первым и отделяться пробелом от восклицательности предложения (смотри пример).
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется написать программу, которая считывает число и выводит
Fizz
, если число делится на 3,
Buzz
, если число делится на 5,
и FizzBuzz
, если оно делится и на 3, и на 5.
Если число не делится ни на 3, ни на 5, вывести пустую строку (перевод строки).
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Помогите трем студентам понять, кто из них первый пойдет решать диффуры, если преподаватель вызывает к доске в алфавитном порядке.
Входные данные содержат три фамилии студентов, разделенные переносом строки. Используется кодировка UTF8.
Программа должна напечатать фамилию студента, который пойдет к доске первым.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Паша, Аня, Оля и Оргрим играют в игру, в которой нужно восстановить предложение по его словам, произнесенным в обратном порядке.
Входные данные содержат количество слов в предложении N и затем само предложение, разбитое по словам, записанное в обратном порядке, каждое слово в своей строке.
Выходные данные должны содержать исходное предложение, разбитое по словам, каждое слово в своей строке.
1 ≤ N ≤ 100
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Автор: | Владивостокская городская олимпиада школьников по информатике 2002/2003 | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 64 Мб | |
Выходной файл: | output.txt |
Брошюра составлена из листов. На каждой стороне листа напечатано по две страницы. Страницы пронумерованы начиная с первой. Из брошюры был вынут один лист. Требуется по двум номерам страниц, напечатанным на одной из сторон этого листа, определить общее количество страниц в брошюре.
Во входном файле содержатся два целых числа A и B — номера страниц на стороне листа, в произвольном порядке
В выходном файле должно содержаться единственное число:
1 ≤ A, B ≤ 106
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | А. Кленин | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 64 Мб | |
Выходной файл: | output.txt |
Время отправления и время прибытия поезда задаются в виде Ч М, где Ч - час от 0 до 23, М - минута от 0 до 59. Время в пути задаётся аналогично в формате Ч М, где Ч - количество часов от 0 до 999, а М - количество минут от 0 до 59.
Требуется по данному времени отправления и времени в пути вычислить время прибытия поезда (возможно, в другие сутки).
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
Автор: | А. Кленин | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt |
Юный программист Вася любит прогуливаться по тропинке длиной D метров, проходящей неподалёку от его школы, и размышлять о том о сём.
В начале прогулки Вася размышляет о Важных Вещах, и ноги несут его с постоянной скоростью, равной либо v1, либо v2 м/c. Затем Вася отвлекается и начинает думать о Всякой Ерунде. В этот момент его скорость становится равной либо w1, либо w2 м/c.
Если Вася затратил на прогулку T секунд, каково максимальное возможное расстояние, пройденное им с Важными Вещами в голове?
Первая строка входного файла содержит числа D T. Во второй строке записаны числа v1 v2. В третьей строке записаны числа w1 w2. Каждое число имеет не более трёх знаков после десятичной точки.
Выходной файл должен содержать одно вещественное число d — максимальное возможное расстояние с точностью не менее 3 десятичных знаков.
Входные данные таковы, что решение всегда существует.
1 ≤ D, T ≤ 1000
10 − 3 ≤ v1 < v2 ≤ 102
10 − 3 ≤ w1 < w2 ≤ 102
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
Автор: | А. Кленин | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt |
Васин дом имеет в плане форму прямоугольника. Северная и южная стороны имеют длину по A метров каждая, а западная и восточная — по B метров каждая.
Вася прогуливается вокруг дома со скоростью 1 метр в секунду, начиная с угла между западной и южной стороной, и проходит вдоль южной, восточной, северной и западной сторон в указанном порядке. Обойдя полностью вокруг дома, Вася снова повторяет свой маршрут.
Требуется написать программу, которая определит, вдоль какой стены будет идти Вася через t секунд после начала прогулки. Будем считать, что дойдя то угла, Вася немедленно за него поворачивает, поэтому на секундах с нулевой по A − 1-ю он находится у южной стены, на секунде номер A — у восточной, и так далее.
Входной файл содержит целые числа A B t.
Выходной файл должен содержать единственный символ, обозначающий стену, вдоль которой прогуливается Вася:
1 ≤ A, B, t ≤ 5 * 108
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется написать программу, которая считывает строки из стандартного ввода.
Если считана строка "Stop!
", программа печатает "Ок
" (кириллицей) и останавливает работу.
В ином случае она печатает "Каша
" и считывает следующую строку.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Аня очень хорошо разбирается в грибах. Грибы бывают разные. Опята, лисички. сыроежки,
подосиновики, подберезовики, обабки, маслята, оленьи рожки, поганки (ядовитые). Boletus edulis
(белые грибы) — самые хорошие.
Нужно посчитать, сколько Boletus edulis
собрала Аня.
В первой строке содержится число N — количество грибов. В следующих N строках — названия грибов.
Выходные данные должны содержать одно число — количество Boletus edulis
.
Регистр не имеет значения, т.е. к примеру
BoLeTuS eDuLiS
и bolETUS edulIS
— один и тот же гриб.
1 ≤ N ≤ 100
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Запуск космического корабля это очень торжественное событие, требующее обратного отсчета.
На вход программа получает одно число N — количество секунд до запуска.
Программа должна вывести обратный отсчет от N до 1, завершающийся командой "Start". Каждый шаг отсчета сопровождается восклицательными знаками. С каждой секундой их количество увеличивается на единицу, так что команда "Start" сопровождается N восклицательными знаками.
1 < N < 100
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется написать программу, которая выводит таблицу умножения чисел от 1 до n.
Входные данные содержат одно целое число n.
Выходные данные должны содержать таблицу умножения числа 1 на числа от 1 до n, затем числа 2 на числа от 1 до n и т. д. Формат вывода см. в примере.
1 ≤ N ≤ 100
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Автор: | А. Кленин | Ограничение времени: | 2 сек | |
Входной файл: | input.txt | Ограничение памяти: | 64 Мб | |
Выходной файл: | output.txt |
При написании сложных программ важное значение имеет стандартизация стиля кодирования, в частности формата записи имён переменных. Часто используются следующие два стандарта для имён переменных, состоящих из нескольких слов:
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Циклический сдвиг — это преобразование массива, при котором все элементы смещаются вправо или влево на несколько позиций. При этом, в случае сдвига влево, элементы из начала массива циклически перемещаются в конец (аналогично переходу из начала в конец очереди).
Первая строка содержит числа N и K Следующая строка содержит N чисел — элементы массива.
Необходимо вывести N чисел — исходный массив, циклически сдвинутый влево на K.
1 < N < 100
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется написать программу, которая поэлементно складывает два массива.
Первая строка входных данных содержит число N — длину массивов. Следующие 2 строки содержат по N чисел каждая — элементы массивов.
Выходные данные должны содержать N разделенных пробелом чисел — результат поэлементного сложения.
1 < N < 100
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Гости Всемирного Форума собрались по домам. Мы не знаем, представители каких делегаций были на форуме, но знаем, что делегаций не больше 197 (по количеству стран в мире). Всё, что может сказать каждый отдельный гость о себе, — номер делегации, которой он принадлежит. Необходимо рассадить гостей по автобусам так, чтобы каждой присутствующей делегации достался ровно один автобус. Какое минимальное количество автобусов нужно, чтобы рассадить гостей?
Входные данные содержат список чисел через пробел — номер делегации каждого отдельного гостя.
Выходные данные должны содержать одно число — минимальное количество автобусов.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Во входном файле записана строка текста, в которой могут встречаться:
Слово — это последовательность подряд идущих латинских букв. Вопреки правилам, все знаки препинания в этой задаче окружены пробелами.
Напишите программу, определяющую, сколько слов в данной строке текста.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Автор: | Московская олимпиада для 7-9 кл., 2005 | Ограничение времени: | 3 сек | |
Входной файл: | d.in | Ограничение памяти: | 64 Мб | |
Выходной файл: | d.out |
Во входном файле записана строка текста, в которой могут встречаться:
-
, обозначающий в некоторых случаях тире, а в некоторых — дефис.Слово — это последовательность подряд идущих латинских букв и знаков дефис, ограниченная с обоих концов. В качестве ограничителей могут выступать начало строки, конец строки, пробел, знак препинания, тире. Тире отличается от дефиса тем, что слева и справа от знака дефис пишутся буквы, а хотя бы с одной стороны от тире идет либо начало строки, либо конец строки, либо пробел, либо какой-либо знак препинания, либо еще одно тире.
Напишите программу, определяющую, сколько слов в данной строке текста.
№ | Входной файл (d.in ) |
Выходной файл (d.out ) |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Не знаем, зачем, но заказчику необходимо разделить персонажей на две группы.
Входные данные содержат список имён, каждое в своей строке.
Выходные данные должны содержать две строки: в первой — персонажи на нечетных позициях списка, во второй — на четных. Имена должны быть разделены запятой с пробелом.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Автор: | Г. Гренкин | Ограничение времени: | 2 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt |
Петя написал на заборе N цифр. Когда Вася увидел то, что натворил Петя, он решил посчитать, сколько раз написана каждая цифра.
Напишите программу, принимающую на вход список цифр, которые написал Вася, и выводящую для каждой цифры, сколько раз она встречается в списке.
Входной файл содержит целое число N, за которым следуют N целых чисел (цифр), каждое с новой строки.
Выходной файл должен содержать 10 чисел — количество цифр 1, количество цифр 2, и т.д., количество цифр 9, количество цифр 0.
1 ≤ N ≤ 1000000
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Аналитик Лёша каждый день собирает данные по АБ тестам и делает отчёты.
Часто ему приходится выставлять порог по доходам с человека, чтобы отфильтровать слишком богатых пользователей-китов, которые влияют на статистику.
В один день ему пришла идея автоматизировать выгрузку данных по покупкам пользователей, участвующих в актуальных АБ тестах, с ограничением по суммарным доходам с человека.
Помогите ему написать программу, которая для заданного АБ теста и порога генерирует SQL запрос к базе данных с помощью форматирования строки (строковой интерполяции).
Шаблон запроса:
SELECT
id,
SUM(product_price) AS revenue_by_user
FROM
dataset.data_table
WHERE
ab_test = '[название АБ теста]'
GROUP BY
id
HAVING
revenue_by_user < [порог]
Входные данные содержат две строки: нaзвание АБ теста и порог для фильтрации пользователей (целое или вещественное число).
Выходные данные должны содержать SQL запрос для заданного АБ теста и порога с точностью 2 знака после запятой.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Автор: | А. Кленин | Ограничение времени: | 2 сек | |
Входной файл: | input.txt | Ограничение памяти: | 64 Мб | |
Выходной файл: | output.txt |
I wish we had some way to handle it sanely, but I don't think a sane solution to case-insensitivity exists.
Linus Torvalds
На компьютере под управлением операционной системы Linux имеется каталог, содержащий N файлов. Пользователю требуется скопировать эти файлы на компьютер, работающий под управлением ОС Windows. К сожалению, файловая система Windows имеет странное свойство. Несмотря на то, что она сохраняет большие и малые буквы в именах файлов, имена, отличающиеся только регистром букв, считаются одинаковыми. Например, файлы с именами ChangeLog, CHANGELOG и changelog при копировании на файловую систему Windows попадут в один и тот же файл.
Чтобы избежать потери данных, предлагается при копировании переименовывать файлы по следующим правилам:
Входной файл содержит количество имён N, за которым следует N строк с именами. Имена состоят из латинских букв и цифр и имеют длину от 1 до M символов.
Выходной файл должен содержать N строк с модифицированными именами файлов.
1 ≤ N ≤ 10000, 1 ≤ M ≤ 255
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется выполнить программу для детерминированной машины Тьюринга.
Пусть задана машина Тьюринга с алфавитом A = {i}N − 1i = 0 и множеством состояний S = {i}Mi = 0. Программа, которую требуется выполнить, описывается тройками значений для каждой пары "символ" / "состояние"
Программа исполняется на бесконечной ленте заполненной символом 0. Изначально машина находится в состоянии 0 на позиции 0 и заканчивает работу при достижении состояния M.
Первая строка входных данных содержит натуральные числа N, M, K — размер алфавита, множества состояний и входных данных программы. Далее следуют N строк по M троек — описание программы. Строка i + 2 содержит тройки для символа i, перечисленные по возрастанию номера состояния. Последняя строка файла содержит текущие состояние ленты длины K.
Выходные данные должны содержать состояние ленты начиная с позиции указателя, в которой машина завершила работу, до последней ячейки, посещённой указателем.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Пусть задана некоторая матрица A = {ai,j}n,mi,j = 0, ai,j ∈ {1,…,9}. Требуется написать программу, выполняющую поворот этой матрицы по часовой стрелке k ∈ Z раз. При k < 0 такой поворот эквивалентен повороту против часовой стрелки |k| раз.
В задаче запрещено пользоваться какими-либо пакетами.
Первая строка входного файла содержит натуральные числа n, m, k — количество строк, столбцов и поворотов. В каждой их следующих n строк содержится по m натуральных чисел — значения элементов матрицы.
Выходной файл должен содержать повернутую матрицу. Каждая строка матрицы записывается в отдельной строке, при этом элементы разделены символом "пробел", аналогично входным данным.
2 ⩽ n,m ⩽ 2000
− 100 ⩽ k ⩽ 100
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
У Влада возник излишек — 1000 рублей. Ему необходимо его срочно потратить, возможно, даже, с перерасходом. Для этого он зашел в супермаркет и кладет в корзину товары по порядку, пока их суммарная стоимость не достигнет излишка. Сколько рублей потратит Влад?
При решении задачи запрещено использовать библиотеку numpy
.
Входные данные содержат число N — количество доступных товаров. Далее N строк, в каждой из которых цена отдельного товара, в порядке, в котором Влад кладет их в корзину. Гарантируется, что товаров достаточно, чтобы покрыть излишек.
Выходные данные должны содержать одно число — суммарную итоговую стоимость товаров в корзине.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Дан массив чисел. Нужно заменить в нем максимальный элемент на минимальный из этого же массива. Если максимальных несколько — заменить каждый из них.
При решении задачи запрещено использовать библиотеку numpy
.
Входные данные содержат несколько чисел, разделенных пробелами.
Выходные данные должны содержать массив, в котором максимальные элементы заменены на минимальный. Элементы массива должны быть разделены пробелами.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Палиндром — это слово или фраза, которые одинаково читаются слева направо и справа налево (без учета пробелов и регистра символов).
При решении задачи запрещено использовать библиотеку numpy
.
Входные данные содержат фразу, не содержащую знаков препинания, в которой слова разделены пробелами.
Выходные данные должны содержать True
, если фраза — палиндром,
и False
в противном случае.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Даны массив и список индексов (номеров элементов). Нумерация начинается с 1. Необходимо прибавить единицу к каждому элементу массива, индекс которого есть в списке индексов.
При решении задачи запрещено использовать библиотеку numpy
.
Первая строка входных данных содержит два числа N и M — длины массива и списка индексов соответственно. Вторая строка содержит N целых чисел — элементы массива. Третья строка содержит M целых чисел — индексы.
Выходные данные должны содержать преобразованный массив.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Вам даны фраза и положительное число — позиция слова. Необходимо вывести слово, находящееся в фразе на этой позиции. Если данное число больше, чем количество слов в фразе, то вывести последнее слово.
При решении задачи запрещено использовать библиотеку numpy
.
В первой строке входных данных дана строка текста, содержащая символы латинского алфавита, пробелы и цифры. Слово — это последовательность идущих подряд латинских букв и/или цифр. Во второй строке дано целое число — позиция искомого слова при нумерации слов с единицы.
Выходные данные должны содержать искомое слово.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Дан вектор произвольной размерности. Необходимо посчитать так называемую норму L1
для этого вектора.
Норма L1 — это сумма абсолютных величин компонент вектора
(абсолютная величина вычисляется функцией abs
).
При решении задачи запрещено использовать библиотеку numpy
.
Входные данные содержат целые числа — компоненты вектора, записанные в одной строке через пробел.
Выходные данные должны содержать одно целое число — норму L1 этого вектора.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Вам дан вектор произвольной размерности (массив вещественных чисел). Необходимо посчитать его норму L2 (евклидову норму). Евклидова норма — это квадратный корень из суммы квадратов компонент вектора.
При решении задачи запрещено использовать библиотеку numpy
.
Входные данные содержат вещественные числа — компоненты вектора, записанные в одной строке через пробел.
Выходные данные должны содержать одно вещественное число — евклидову норму этого вектора.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Дана квадратная матрица, нужно ее транспонировать. Транспонированная матрица — это матрица, для получения которой из исходной нужно элементы каждой строки исходной матрицы записать в виде столбца в том же порядке.
При решении задачи запрещено использовать библиотеку numpy
.
Первая строка содержит число N — количество строк (и столбцов) в матрице.
Следующие N строк содержат N чисел каждая — элементы матрицы.
Выходные данные должны содержать N строк по N чисел каждая — элементы транспонированной матрицы.
1 < N < 100
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Дан вектор, состоящий из p чисел. Необходимо преобразовать вектор в матрицу размера n × m = p, состоящую из n строк и m столбцов. Матрица заполняется последовательно, то есть элементы вектора с 1 по m попадут в первую строку матрицы, с m + 1 по 2m — во вторую строку и так далее.
При решении задачи запрещено использовать библиотеку numpy
.
Первая строка входных данных содержат целое число p — количество элементов в входном векторе. Вторая строка содержит p целых чисел — элементы вектора. Третья строка содержит два целых числа n и m — размеры итоговой матрицы.
Выходные данные должны содержать итоговую матрицу. Строки матрицы разделяются переводами строки, числа в каждой строке — пробелами.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Дан массив чисел. Необходимо удалить элементы, за которыми в этом массиве следует ноль.
При решении задачи запрещено использовать библиотеку numpy
.
Входные данные содержат ряд чисел, разделенных пробелом.
Выходные данные должны содержать преобразованный массив.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Дан массив слов, нужно отсортировать его по второй букве. Гарантируется, что в каждом слове не меньше двух букв, а все вторые буквы слов различны.
При решении задачи запрещено использовать библиотеку numpy
.
Входные данные содержат слова, разделённые пробелами.
Выходные данные должны содержать строку слов, разделённых пробелом, отсортированных по второй букве.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется написать программу, которая выведет квадраты положительных элементов списка в обратном порядке. Решение должно быть написано в одну строку (в данном случае одной строкой считается одно выражение в понятии языка питон).
При решении задачи запрещено использовать библиотеку numpy
.
Входные данные содержат исходный список целых чисел, разделенных пробелами.
Выходные данные должны содержать преобразованный список.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Необходимо составить новый список из существующего по такому правилу: крайние элементы в начале и в конце списка оставить на своих местах (по два элемента с каждой стороны), а элементы между ними записать в обратном порядке. Решение должно быть написано в две строки (в данном случае одной строкой считается одно выражение в понятии языка питон).
При решении задачи запрещено использовать библиотеку numpy
.
Входные данные содержат список целых чисел, разделенных пробелами. Гарантируется, что исходный список содержит как минимум 4 элемента.
Выходные данные должны содержать список чисел, разделенных пробелами.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Дано 3 числа: A, B, C. Необходимо посчитать наибольший общий делитель (НОД) каждой из пар A и B, A и C, B и C
При решении задачи запрещено использовать библиотеку numpy
.
Входные данные содержат 3 числа — A, B, C.
Выходные данные должны содержать 3 числа — НОД A и B, НОД A и C и НОД B и C
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется написать на языке Python функцию Add(x, y)
, которая принимает два числа и возвращает их сумму.
Пример использования функции в примерах тестов.
При решении задачи запрещено использовать библиотеку numpy
.
Код решения должен содержать только определение и реализацию функции. Он не должен ничего выводить.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 | x, y = 2, 3
print(Add(x, y))
|
|
2 | print(Add(10, 11))
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется реализовать на языке Python функцию
PrintMatrix(mat)
, которая принимает двумерный массив и печатает его.
Пример использования функции в примерах тестов.
При решении задачи запрещено использовать библиотеку numpy
.
Код решения должен содержать только определение и реализацию функции.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 | mat = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
PrintMatrix(mat)
|
|
2 | PrintMatrix([[1, 2, 3], [4, 5, 6]])
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется реализовать на языке Python
функцию Map(func, l)
, которая принимает два параметра —
функцию и список — и возвращает новый список, полученный применением функции
func
к элементам списка l
.
Пример использования функции в примерах тестов.
В решении запрещено использовать стандартную функцию map
.
При решении задачи запрещено использовать библиотеку numpy
.
Код решения должен содержать только определение и реализацию функции. Он не должен ничего выводить на экран.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 | ary = [-1, 2, -3, 4]
print(Map(abs, ary))
|
|
2 | print(sum(Map(lambda x: x**2, [2, 3])))
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется написать программу, вычисляющую следующую итерацию игры «Жизнь».
Игра проходит в прямоугольной области размером N на M, состоящей из символов точка (.
), обозначающий мёртвую клетку, и решётка (#
), обозначающий живую. Новое состояние каждой клетки определяется состоянием её 8 соседей по следующим правилам:
При решении задачи запрещено использовать библиотеку numpy
.
Входные данные содержат текущее состояние игры.
Выходные данные должны содержать следующую итерацию игры в том же формате.
1 ⩽ N,M ⩽ 100
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Ограничение времени: | 1 сек |
Ограничение памяти: | 512 Мб |
Требуется реализовать на языке Python
функцию Join(array, separator)
, которая принимает два параметра —
список строк и разделитель — и возвращает строку, полученную
соединением элементов переданного списка,
при этом между элементами списка вставляется разделитель (separator
).
Если не передать функции разделитель, то она должна использовать в качестве разделителя пробел.
Пример использования функции в примерах тестов.
В решении запрещено использовать стандартную функцию join
.
При решении задачи запрещено использовать библиотеку numpy
.
Код решения должен содержать только определение и реализацию функции. Он не должен ничего выводить.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 | ary = ['aa', 'bb', 'cc']
print(Join(ary, '!'))
|
|
2 | ary = ['aa', 'bb', 'cc']
print(Join(ary))
|
|
Входной файл: | input.txt | Ограничение времени: | 1 сек | |
Выходной файл: | output.txt | Ограничение памяти: | 512 Мб |
Необходимо написать программу, которая группирует студентов по их группам.
При решении задачи запрещено использовать библиотеку numpy
.
В первой строке входного файла дано число n — количество студентов. Далее следует n строк, в каждой из которых записаны группа и имя студента.
Группа и имя студента разделены символом табуляции.
Выходной файл должен содержать список студентов, сгруппированный по группам. Для каждой группы необходимо вывести имя группы, а затем все имена студентов, которые принадлежат этой группе в алфавитном порядке, каждое в новой строке.
Сами группы следуют также в алфавитном порядке.
1 ≤ n ≤ 105
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется реализовать на языке Python класс
Hello_world
.
У класса должен быть следующий интерфейс:
class Hello_world:
# Конструктор
def __init__(self):
pass
# Функция, по умолчанию возвращающая "Hello world!". В случае
# использования set_new_hello_world возвращаемое значение изменяется.
def get_hello_world(self):
pass
# Функция, изменяющая возвращаемое функцей get_hello_world значение на new_hello_world.
def set_new_hello_world(self, new_hello_world):
pass
Код решения должен содержать только определение и реализацию класса.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется реализовать на языке Python класс
Time
.
У класса должен быть следующий интерфейс:
class Time:
# Конструктор, принимающий четыре целых числа: часы, минуты, секунды и миллисекунды.
# В случае, если передан отрицательный параметр, вызвать исключение ValueError.
# После конструирования, значения параметров времени должны быть корректными:
# 0 <= GetHour() <= 23
# 0 <= GetMinute() <= 59
# 0 <= GetSecond() <= 59
# 0 <= GetMillisecond() <= 999
def __init__(self, hours=0, minutes=0, seconds=0, milliseconds=0):
pass
def GetHour(self):
pass
def GetMinute(self):
pass
def GetSecond(self):
pass
def GetMillisecond(self):
pass
# Прибавляет указанное количество времени к текущему объекту.
# После выполнения этой операции параметры времени должны остаться корректными.
def Add(self, time):
pass
# Оператор str должен представлять время в формате
# HH:MM:SS.milliseconds
def __str__(self):
pass
Код решения должен содержать только определение и реализацию класса.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 | time = Time(25, 11, 12, 1)
print(str(time))
time.Add(Time(0, 0, 0, 1010))
print(str(time))
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется реализовать на языке Python класс
ShiftableList(list)
, который наследуется от list
и реализует операторы циклического сдвига влево (<<)
и вправо (>>). Результатом выполнения этих операций должен быть
новый объект, при этом исходный не изменяется. Если операнд справа от оператора сдвига имеет тип, отличный от int
,
необходимо вызвать исключение TypeError
. В случае, если величина сдвига отрицательна,
должен выполниться сдвиг в противоположную сторону на количество позиций, равное модулю этой величины.
Код решения должен содержать только определение и реализацию класса.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 | lst = ShiftableList(['a', 'b', 'c'])
lst2 = lst << 1
print(', '.join(lst2))
|
|
2 | lst = ShiftableList(['a', 'b', 'c'])
lst2 = lst >> -2
print(''.join(lst), ''.join(lst2))
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Вывести сначала все публичные атрибуты класса str
в алфавитном порядке, а затем все
приватные атрибуты, тоже в алфавитном порядке, каждый с новой строки.
Названия приватных методов начинаются с символа '_
' (ascii 95).
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
То же для произвольного встроенного класса (Вывести сначала все публичные атрибуты класса в алфавитном порядке, а затем все приватные атрибуты, тоже в алфавитном порядке, каждый с новой строки.)
Входные данные содержат одну строку — название класса, список методов которого необходимо вывести.
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется реализовать на языке Python класс
CardStack
. У класса должен быть следующий интерфейс:
from __future__ import annotations
from typing import Union, Iterable, List
class CardStack:
values: List[int]
def __init__(self, val: Union[int, Iterable[int], None] = None):
"""If val is None values is an empty list
If val is int fills values with val random integers between -100 and 100
If val is Iterable[int] fills values from val
"""
pass
def shuffled(self) -> CardStack:
"""Returns a new CardStack instance with shuffled values"""
pass
def combine(self, other: CardStack) -> CardStack:
"""Returns a new CardStack instance with self and other values combined one after another
[1, 2, 3], [4, 5, 6, 7] -> [1, 4, 2, 5, 3, 6, 7]
"""
pass
def add(self, value: int) -> None:
"""Adds a new value on top of the stack"""
pass
def __len__(self) -> int:
"""Returns the size of the stack"""
pass
Описание интерфейса использует аннотации типов, в частности, Union, List и Iterable.
Код решения должен содержать только определение и реализацию класса.
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется реализовать на языке Python функции-декораторы.
Функция time_decorator должна принимать декорируюмую функцию и возвращать функцию выводящую время начала выполнения функции, до выполнения декорируемой функции. После выполнения декорируемой функции должно выводиться время окончания выполнения функции и общее время выполнения в миллисекундах.
def time_decorator (decorated_func):
pass
Функция counter_decorator должна принимать декорируюмую функцию и возвращать функцию выводящую количество вызовов декорируемой функции. И выполнять декорируюмую функцию.
def counter_decorator(decorated_func):
pass
Функция method_decorator должна принимать метод класса с одним аргументом, и возвращать функцию от 3-х аргументов (x, y, z), и вызывать декорируемый метод от аргумента 3 * x - 7 * y + 15 * z + 18.
def method_decorator(decorated_method):
pass
Код решения должен содержать только определение и реализацию функций.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется реализовать на языке Python класс Student
со свойством name
с геттером и сеттером.
class Student:
def __init__(self):
pass
@property
def name(self) -> str:
pass
Сеттер свойства name
должен позволять присваивать только строки, состоящие из пробелов и букв английского алфавита (в любом регистре), в остальных случаях требуется бросать исключение ValueError
.
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется реализовать на языке программирования Python функцию
from typing import TypeVar
from collections.abc import Generator, Iterable
T = TypeVar('T')
def take(iterable: Iterable[T], *, skip: int = 0, step: int = 1, count: int | None = None) -> Generator[T, None, None]:
'''Yields every `step`-th value from `iterable` skipping first `skip` values.
If `count` is not None yields this many values at most.
Args:
iterable: Iterable to take values from
skip: Number of values to skip from the beginning, non-negative integer
step: Skip `step` - 1 values between every yield, positive integer
count: Yields this many values at most, None or non-negative integer
Raises:
ValueError:
`skip` or `count` is less than 0
`step` is less than 1
TypeError:
`skip`, `step` is not an int or `iterable` is not an Iterable
`count` is not an int or None
'''
pass
Код решения должен содержать только определение и реализацию функции.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 | print(*take(range(100), skip=5, step=5, count=5))
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется реализовать на языке Python функцию-декоратор check_types
, выполняющую проверку параметров и возвращаемого значения функции на соответствие аннотации при вызове функции. Функция должна поддерживать list, dict, Any, tuple, Optional, Union, set
(см. typing) и проверку на полное соответствие типу, при этом объекты классов наследников разрешается передавать как объекты классов родителей. Если вызов функции не проходит проверку, необходимо вызвать исключение TypeCheckError
, имеющее следующий интерфейс
class TypeCheckError(BaseException):
# Имя аргумента, которому было передано значение неверного типа. `return`, если функция вернула значение неверного типа
name: str
Функция также должна иметь возможность декорировать классы, при этом добавляется проверка на каждую функцию, определённую в классе. После декорирования такой класс должен быть доступен для использования в аннотациях других классов и функций.
Все тесты используют следующий функционал
from __future__ import annotations
Код решения должен содержать определение функции check_types
и класса TypeCheckError
, а также все вспомогательные переменные, функции и классы.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 | @check_types
def add(a: int, b: int) -> int:
return a + b
try:
print(add(1, 2))
print(add('1', '2'))
except TypeCheckError as e:
print(f'Failed {e.name}')
|
|
2 | @check_types
def sqr(a: float) -> int:
return a * a
try:
sqr(2.)
except TypeCheckError as e:
print(f'Failed {e.name}')
|
|
3 | @check_types
class Number:
def __init__(self: Number, value: int):
self.value = value
def __add__(self: Number, other: Number) -> Number:
return Number(self.value + other.value)
try:
print((Number(1) + Number(2)).value)
print((Number(1) + 2).value)
except TypeCheckError as e:
print(f'Failed {e.name}')
|
|
4 | @check_types
def pow(x: int | list[int], p: int) -> int | list[int]:
if isinstance(x, list):
return [i ** p for i in x]
return x ** p
try:
print(pow(2, 2))
print(*pow([1, 2, 3], 3))
print(*pow((1, 2, 3), 3))
except TypeCheckError as e:
print(f'Failed {e.name}')
|
|
Входной файл: | input.txt | Ограничение времени: | 1 сек | |
Выходной файл: | output.txt | Ограничение памяти: | 512 Мб |
Требуется написать программу, которая вычисляет среднее арифметическое заданной выборки.
Входные данные содержат число n, за которым следует n положительных вещественных чисел.
Выходные данные должны содержать единственное число — среднее арифметическое выборки с точностью не менее 3 знаков после запятой.
1 < n < 105
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
Входной файл: | input.txt | Ограничение времени: | 1 сек | |
Выходной файл: | output.txt | Ограничение памяти: | 512 Мб |
Требуется написать программу, которая вычисляет среднее гармоническое заданной выборки.
Входные данные содержат число n, за которым следует n положительных вещественных чисел.
Выходные данные должны содержать единственное число — среднее гармоническое выборки с точностью не менее 3 знаков после запятой.
1 < n < 105
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
Входной файл: | input.txt | Ограничение времени: | 1 сек | |
Выходной файл: | output.txt | Ограничение памяти: | 512 Мб |
Требуется написать программу, которая вычисляет средние арифметическое, гармоническое и геометрическое заданного вариационного ряда.
Входные данные содержат число n, за которым следует n строк, состоящих из пар чисел: вещественное число xi и соответствующая ему частота mi (т.е. количества элементов xi в исходной выборке).
Выходные данные должны содержать три числа, разделённых пробелом: средние арифметическое, гармоническое и геометрическое с точностью не менее 3 знаков после запятой.
1 ≤ n ≤ 300, 1 ≤ mi ≤ 5, 0 < xi < 3
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
Входной файл: | input.txt | Ограничение времени: | 1 сек | |
Выходной файл: | output.txt | Ограничение памяти: | 512 Мб |
Пусть имеется выборка {xi}ni = 1. Для построения гистограммы необходимо разбить выборку на интервалы равной длины [b1, b2), [b2, b3) … [bk, bk + 1], b1 = mini xi, bk + 1 = maxi xi.
Число k - оптимальное количество интервалов - вычисляется согласно формуле Стёрджеса k = 1 + ⌊log2 n⌋, где ⌊ ...⌋ — антье.
Входные данные содержат число n, за которым следует n вещественных чисел.
В результате работы программы необходимо вывести k натуральных чисел — количество элементов в каждом из интервалов.
1 ≤ n ≤ 104
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
Входной файл: | input.txt | Ограничение времени: | 1 сек | |
Выходной файл: | output.txt | Ограничение памяти: | 512 Мб |
Требуется написать программу, которая вычисляет матрицу коэффициентов корреляции Пирсона заданных выборок.
Первая строка входных данных содержит целые числа N и M — количество и длину выборок соответственно. Каждая из последующих N строк содержит по M вещественных чисел.
Выходные данные должны содержать матрицу размером N × N — матрицу коэффициентов корреляции. Вещественные числа необходимо вывести с точностью не менее трёх знаков после запятой.
2 ≤ N < 50, 1 < M < 104
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | input.txt | Ограничение времени: | 1 сек | |
Выходной файл: | output.txt | Ограничение памяти: | 512 Мб |
Задана выборка {xi} объёма n. Требуется вычислить выборочный центральный момент k-го порядка.
Входные данные содержат числа n и k, за которыми следует n вещественных чисел разделённых пробелом.
Выходные данные должны содержать единственное вещественное число — выборочный центральный момент k-го порядка с точностью не менее трёх знаков после запятой.
1 ≤ n ≤ 105, 1 ≤ k ≤ 5
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | input.txt | Ограничение времени: | 1 сек | |
Выходной файл: | output.txt | Ограничение памяти: | 512 Мб |
Пусть задан временной ряд {yt}nt = 1. Требуется написать программу, вычисляющую сглаженный ряд {ŷt}n − m / 2t = m / 2, где m — ширина интервала сглаживания.
Первая строка входных данных содержит два целых числа n и m. Следующая строка содержит n вещественных чисел — уровни ряда yt.
Единственная строка выходного файла должна содержать уровни сглаженного ряда ŷt с точностью не менее трёх знаков после запятой.
1 < n < 105
3 ⩽ m ⩽ 15
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
Входной файл: | input.txt | Ограничение времени: | 1 сек | |
Выходной файл: | output.txt | Ограничение памяти: | 512 Мб |
Пусть задан временной ряд {yt}nt = 1. Требуется написать программу, вычисляющую сглаженный ряд {ŷt}n − m / 2t = m / 2 с использованием весов {wi}mi = 1 для расчёта среднего, где m — ширина интервала сглаживания.
Первая строка входных данных содержит два целых числа n и m. Далее следуют m целых чисел — веса wi. Последняя строка содержит n вещественных чисел — уровни ряда yt.
Единственная строка выходного файла должна содержать уровни сглаженного ряда ŷt с точностью не менее трёх знаков после запятой.
1 < n < 105
3 ⩽ m ⩽ 15
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется реализовать на языке программирования Python функцию, вычисляющую ближайшую точку из массива к данной в терминах евклидова расстояния
import numpy as np
def nearest(points: np.ndarray, a: np.ndarray) -> np.ndarray:
'''Returns the point from `points` nearest to `a` in terms of euclidean distance
Args:
points: A 2-dimensional np.ndarray
a: A 1-dimensional np.ndarray, `a`.shape[0] == `points`.shape[1]
'''
pass
При решении задачи необходимо использовать библиотеку numpy
.
Код решения должен содержать только определение и реализацию функции.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Существует набор линий в двумерном пространстве. В этом же пространстве присутствует точка point. Необходимо найти кратчайшие расстояния до всех линий. Требуется реализовать на языке Python функцию, позволяющую находить расстояния от точки point до всех линий. Результатом выполнения этой функции должен быть массив расстояний. Работа должна быть выполнена с применением numpy для хранения и обработки всех данных.
import numpy as np
def calculate(start_points: np.ndarray, end_points: np.ndarray, point: np.ndarray) -> np.ndarray:
'''Возвращает одномерный np.ndarray, содержащий расстояния до линий
Args:
start_points: двумерный np.ndarray, содержащий координаты первых точек линий
end_points: двумерный np.ndarray, содержащий координаты вторых точек линий
p: двумерный np.ndarray, содержайщий координаты точки point.
start_points.shape == end_points.shape
Returns:
одномерный np.ndarray, содержащий расстояния от точки point до линий
'''
pass
При решении задачи необходимо использовать библиотеку numpy
.
Код решения должен содержать только определение и реализацию функции. Он не должен ничего выводить. Функция должна возвращать значения, округленные с точностью до 4х знаков после запятой. В случаях нахождения округляемого значения ровно посередине, требуется округлить до ближайшего четного:
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется реализовать на языке Python класс
GameOfLife
. Класс описывает обобщённую игру «Жизнь». Игра представляет собой многомерный (n >= 2
) массив булевых значений. Каждая ячейка может быть живой (True
) или мёртвой (False
). На каждой итерации состояние игры обновляется следующим образом:
a
до b
включительно живых соседейc
до d
включительно живых соседей
import numpy as np
class GameOfLife:
'''Represents a generalized Conway's Game of Life.
The game is an n-dimensional array (n >= 2) of boolean values. Each cell is either alive (True) or dead (False).
On each iteration the cells are updated as follows:
- An alive cell stays alive if it has between `a` and `b` live neighbours
- A dead cell becomes alive if it has between `c` and `d` live neighbours
- Otherwise the cell dies
The board has wraparound edges, so the neighbours of edge cell are located on the opposite edge.
Fields:
board: the current state of the game, n-dimensional array of type bool
a: minimal number of live neighbours for a cell to stay alive
b: maximal number of live neighbours for a cell to stay alive
c: minimal number of live neighbours for a cell to become alive
d: maximal number of live neighbours for a cell to become alive
'''
def __init__(self, board: np.ndarray,
a: int = 2, b: int = 3,
c: int = 3, d: int = 3):
'''Initializes `board` and game rule fields. `board` must be stored as a copy'''
pass
def next_iteration(self) -> None:
'''Computes the next iteration of the game. Invalidates `self.board`'''
pass
При решении задачи необходимо использовать библиотеку numpy
.
Код решения должен содержать только определение и реализацию класса.
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Вам выпала уникальная возможность исследовать популяцию марковских котов. Известно, что существует N пород, а также начальный размер популяции — количество особей каждой породы xi ∈ N0, i = 1, N. Марковские коты также обладают уникальной особенностью — каждый день ровно в полночь каждая отдельная особь породы i с вероятностью pi,j независимо от остальных трансформируется в ki,j ∈ N0 особей породы j, при этом N∑j = 1pi,j = 1. В качестве отчёта Вам требуется предоставить размер популяции в полночь через T дней наблюдений. Естественно, Вам не хочется бегать за котами и считать их вручную, поэтому Вы решаете ограничиться математическим ожиданием, ведь никто точно не захочет проверить предоставленный Вами отчёт, даже если количество особей будет нецелым.
При решении задачи необходимо использовать библиотеку numpy
.
Первая строка входного файла содержит два целых числа N, T — количество пород и дней наблюдений соответственно. В следующих N строках содержится по N вещественных чисел — вероятности pi,j. В следующих N строках содержится по N целых чисел — количества ki,j. Последняя строка файла содержит N целых чисел xi — начальный размер популяции.
Выходной файл должен содержать N вещественных чисел — математическое ожидание размера популяции с точностью не менее 3-х знаков после запятой.
2 ⩽ N ⩽ 500
1 ⩽ T ⩽ 15
0 ⩽ ki,j ⩽ 5
0 ⩽ xi ⩽ 10
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
Input file: | Standard input | Time limit: | 1 sec | |
Output file: | Standard output | Memory limit: | 512 Mb |
Let the assignment expression be described by the following grammar
Comma = ",", { " " };
Digit = "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9";
Number = "0" | ( Digit, { Digit | "0" } );
Letter = "A" | "B" | "C" | "D" | "E" | "F" | "G"
| "H" | "I" | "J" | "K" | "L" | "M" | "N"
| "O" | "P" | "Q" | "R" | "S" | "T" | "U"
| "V" | "W" | "X" | "Y" | "Z" | "a" | "b"
| "c" | "d" | "e" | "f" | "g" | "h" | "i"
| "j" | "k" | "l" | "m" | "n" | "o" | "p"
| "q" | "r" | "s" | "t" | "u" | "v" | "w"
| "x" | "y" | "z" ;
Variable = Letter, { Letter | Digit | "0" };
Value = Variable | Number | EnclosedValueList | EmptyList;
ValueList = Value, { Comma, Value }, [ Comma ];
EnclosedValueList = "(", ValueList , ")";
EmptyList = "(", { " " }, ")";
Destination = Variable | EnclosedDestinationList;
DestinationList = Destination, { Comma, Destination }, ( [ Comma, "*", Variable ] | [ Comma ] );
EnclosedDestinationList = "(", DestinationList, ")";
Assignment = ( DestinationList | EnclosedDestinationList ), " = ", ( ValueList | EnclosedValueList );
Both sides are treated as potentially nested lists. A variable on the left side is assigned a value placed at the same position on the right side. A value therefore may be a Number, a Variable or a list. A list must be enclosed in parenthesis and have at least one comma, i.e. (a,)
is a list and (a)
is equivalent to simply a
. Additionally, parenthesis at the top level may be omitted. The assignment is performed from top to bottom, left to right, meaning that a Variable may be used as Value on the right side if it has already been assigned a Value. In a special case that a Variable is preceded by an asterisk it is assigned a potentially empty list of the rest of the Values at that level. The assignment fails if a Variable or a Value doesn't have a corresponding item on the other side or if a Variable is used as a Value before it has been assigned a Value.
Your program must decompose such assignment into a list of simple assignments: one Variable is assigned one Number or a list of Numbers.
Input consists of a single line — the assignment expression to be executed.
If the assignment cannot be performed output a single number -1. Otherwise, output must contain a simple assignment expression for each variable in lexicographical order one per line. The simple assignment is defined by the following grammar
SimpleAssignment = Variable, " = ", NumberOrList;
NumberOrList= Number | ( "(", NumberOrList, { Comma, NumberOrList }, [ Comma ] ")" ) | EmptyList;
The assignment expression is guaranteed to be grammatically correct.
Length of the input is no more than 104 symbols.
No. | Standard input | Standard output |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|