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

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

Задача 1:

В какой-то момент в Институте биоинформатики биологи перестали понимать, что говорят информатики: они говорили каким-то странным набором звуков.

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

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

Пусть, например, на вход программе передано:

Это значит, что символ a исходного сообщения заменяется на символ * в шифре, b заменяется на d, c — на % и d — на #. Нужно зашифровать строку abacabadaba и расшифровать строку #%d*% с помощью этого шифра. Получаем следующие строки, которые и передаём на вывод программы:

Решение 1:

Решение 2:

Решение 3:

Решение 4:

Задача 2:

Рассчитать ежемесячную сумму платежа по кредиту при использовании дифференцированных выплат (в этом случае ежемесячный платеж по погашению кредита постепенно уменьшается к концу периода кредитования). Сумма кредита составляет s рублей, срок кредита n месяцев, процент - k%.

Для расчета платежа в месяц t используется формула:Расчет платежей по кредиту{:style="float:left; margin-right:25px; margin-bottom:10px; margin-top:25px"}

Входные данные:

  • сумма кредита s руб (целое число);
  • срок кредита n месяцев (целое число);
  • процент k (целое число).

Выходные данные:

  • n строк, на каждой из которых выведены платежи за каждый месяц, для вывода использовать формат: "%2d месяц - %8.2f руб";

  • доход банка, для вывода использовать формат: "Доход банка - %6.2f руб".

Решение:

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

Результат:

Задача 3:

Вам дано описание пирамиды из кубиков в формате XML. Кубики могут быть трех цветов: красный (red), зеленый (green) и синий (blue). Для каждого кубика известны его цвет, и известны кубики, расположенные прямо под ним.

Пример: XML

Введем понятие ценности для кубиков. Самый верхний кубик, соответствующий корню XML документа имеет ценность 1. Кубики, расположенные прямо под ним, имеют ценность 2. Кубики, расположенные прямо под нижележащими кубиками, имеют ценность 3. И т. д.

Ценность цвета равна сумме ценностей всех кубиков этого цвета.

Выведите через пробел три числа: ценности красного, зеленого и синего цветов.

Решение:

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

Задача 4:

Класс Elevator – это чертёж лифта. Объект класса Elevator – это созданный по чертежу лифт. Создавая объект класса, вы устанавливаете лифт в доме, указывая количество этажей в доме и текущий этаж, на котором остановился лифт:

Если вы не указываете количество этажей и текущий этаж, то по умолчанию лифт устанавливается в доме из 5 этажей и останавливается на 3 этаже.

В лифте есть две кнопки:

  • кнопка "up", которая поднимает лифт на один этаж выше:

Лифт поднимается на 4 этаж

  • кнопка "down", которая опускает лифт на один этаж ниже:

Лифт опускается на 2 этаж

Однако если житель дома нажал на кнопку "up", когда лифт находится на максимальном этаже, то:

Лифт не может подняться выше

Если житель дома нажал на кнопку "down", когда лифт находится на первом этаже, то:

Лифт не может опуститься ниже

От Вас требуется написать только класс Elevator.

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

Решение:

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

Задача 5:

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

Для того, чтобы это звучало правильно, для каждого n нужно использовать верное окончание слова.

Напишите программу, считывающую с пользовательского ввода целое число n (неотрицательное), выводящее это число в консоль вместе с правильным образом изменённым словом "программист", для того, чтобы робот мог нормально общаться с людьми, например: 1 программист, 2 программиста, 5 программистов.

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

Дополнительный комментарий к условию:

Обратите внимание, что задача не так проста, как кажется на первый взгляд. Если ваше решение не проходит какой-то тест, это значит, что вы не рассмотрели какой-то из случаев входных данных (число программистов 0≤n≤1000). Обязательно проверяйте свои решения на дополнительных значениях, а не только на тех, что приведены в условии задания.

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

Решение 1:

Решение 2:

Решение 3: