Олимпиада по программированию 2011

В Олимпиаде приняли участие студенты 1, 2 и 4 курсов математического факультета МПГУ.

Итоги таковы:

  1. Тарапата Виктор Викторович (1 курс, 9 группа).
  2. Канишева Анна Борисовна (1 курс, 9 группа).
  3. Салимов Данил Ринатович (4 курс, 4 группа).

Регламент

  • 14:25–14:30 — Регистрация и получение заданий.
  • 14:30–16:59 — Работа над задачами, досрочная сдача задач по желанию участников.
  • 17:00 — Срок обязательной сдачи задач.

Участник имеет право досрочно сдать свои задачи. В этом случае он объявляет о своём намерении, фиксируется время сдачи. После сдачи, участник не должен вносить какие-либо изменения в программный код.

В период работы над задачами участник не должен покидать аудиторию, пользоваться какими-либо гаджетами (смартфонами, телефонами, ноутбуками и пр.).

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

Побеждает тот, кто наберёт максимальное количество баллов. При равном количестве баллов побеждает тот участник, кто раньше набрал победную сумму баллов.

Все участники с первого курса получают на старте фору в 1 балл.

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

Задания олимпиады по программированию 2011

Задача 1 (2 балла)

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

Например, для числа 600724 набор подходящих чисел будет таким:

6 60 600 60072 72 24

Задача 2 (1 балл)

Автомат по продаже билетов на электричку умеет выдавать сдачу монетами достоинством 1, 2, 5 и 10 рублей. Дана сумма, которую надо выдать в качестве сдачи. Создайте программу, которая выведет на экран информацию о том, каких и сколько монет надо выдать покупателю билета, чтобы их количество оказалось минимальным. Считать, что в автомате неограниченное количество монет каждого номинала.

Пример: покупателю надо выдать 49 рублей сдачи.

Вывод программы:

4 по 10 руб.
1 по 5 руб.
2 по 2 руб.

Задача 3 (2 балла)

У входа в парк растут 6 экзотических кустов. Дан набор их высот в сантиметрах. Чтобы кусты выглядели аккуратно подстриженными надо, чтобы высота самого высокого из них отличалась от высоты самого низкого не более, чем на 15 см.

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

Например, дан такой набор высот: 115, 100, 97,102, 104, 120.

Вывод программы:

1-й на 3 см.
6-й на 8 см.

Задача 4 (1 балл)

Построенный в лаборатории робот умеет перемещаться по клеткам координатной плоскости, получая команды в виде целых чисел:

  • Если робот получает команду в виде положительного числа N, то он перемещается на N позиций вправо.
  • Если робот получает команду в виде отрицательного числа с модулем N, то он перемещается на N позиций вниз.
  • Если робот получает команду в виде нуля, то робот перемещается по диагонали на одну клетку (влево и вверх).

Известно, что робот находится в исходной позиции с координатами (0;0). И дан набор из четырёх команд-чисел. Создайте программу, которая выведет координаты робота на плоскости, после выполнения четырёх данных команд.

Например, дан такой набор команд роботу: 4, 0, 2, -3

Вывод программы:

(5;-2)

Задача 5 (2 балла)

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

Например, дано число 1038345. Вывод программы:

8543310