Турнир Архимеда XVI Командная олимпиада по программированию

advertisement
XVI Турнир Архимеда
Командная олимпиада по программированию
3 декабря 2006 года
ФМШ №2007
Командная олимпиада по программированию.
3 декабря в рамках XVI турнира Архимеда в ФМШ 20007 состоялась командная олимпиада по
программированию среди учащихся 9 – 11 классов. В олимпиаде приняло участие 14 команд
по 2 – 3 человека. В течении 4 часов участником предлагалось сдать тестирующей системе 11
задач. По результатам олимпиады 8 команд были награждены дипломами и памятными
призами(книгами).
Результаты:
Команда
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Реше
но
9
9
8
8
7
7
7
6
5
4
3
2
1
1
“Интеллектуал”
Школа №57
Школа 2007 10 класс Б
Школа 2007 11 класс А
Школа 2007 11 класс Б
СУНЦ МГУ и “Интелектуал”
Школа 2007 10 класс Б и 10 класс А
Лицей «Вторая школа»
Школа 179
Школа 2007 11 класс А
ЦДО-1
Школа 2007 9 классБ
Школа 5
ЦДО-2
Зам. Директора по УВР
Председатель МО «Информатика и ИКТ »
Председатель Жюри
Место
Диплом
1
2
3
4
5
6
7
8
9
10
11
12
13
14
I
I
II
II
III
III
III
III
Чулков П. В.
Шершнев Е. Ф.
Гуровиц В. М.
1
XVI Турнир Архимеда
Командная олимпиада по программированию
3 декабря 2006 года
ФМШ №2007
Приложение 1.
Положение о командной олимпиаде по программированию:
Оргкомитет: Чулков П. В., Гуровиц В. М., Шершнев Е. Ф., Шапарин Е. А., Мамонтов А. В.,
Никитин В. П., Андреева Е. В., Обрубов А., Струков Т. С., Пчелинцев Ф. А., Новодворская Е.
А.
Участники: Команды учащихся 9 – 11 классы по 3 человека.
Цели и задачи: Активизация учебной деятельности учащихся, подготовка учащихся и
рабочих мест к командной олимпиаде(3 декабря), выявление и поощрение способных
учащихся, совершенствование знаний, умений и навыков по программированию, информатике
и информационным технологиям, повышение интереса к предмету и развитие учебнопознавательных процессов учащихся.
Подготовительная часть:
До 20 ноября (включительно) подаются заявки на участие – команда состоит из 3 человек, 1-2
команды от класса. Заявки подаются Гуровцу В. М. в бумажном или электронном виде по
следующему образцу
Класс:
Номер команды:
Учитель:
Состав команды:
1. Фамилия, Имя
2. Фамилия, Имя
3. Фамилия, Имя
Требуемые среды программирования
(Контактные данные: gurovic@gmail.com; gurovic@mccme.ru)
План проведения олимпиады
Время
Действия
9-00 – 9-30
Сбор оргкомитета.
9-30 – 9-50
Регистрация команд и распределение по кабинетам.
9-50 – 10-00
Объяснение правил участия в олимпиаде.
10-00 – 11-00
Пробный тур
11-00 – 15-00
Решение задач участниками
14-15 – 14-45
Разбор задач
14-45 – 15-00
Награждение победителей
Описание олимпиады.
Каждой команде предоставляется один компьютер и набор (8-10) задач. В течение олимпиады
(3-4 часа) они решают эти задачи на языке программирования C или Паскаль и отсылают их
для автоматической проверки. Задачи проверяются на наборе заранее подготовленных
тестовых данных, и считается решенной, если она выдает верный ответ на всех тестах. В
случае, если программа не проходит один из тестов, команда может исправить решение и
послать его на проверку повторно. Команде не сообщается, на каком именно тесте ее решение
выдает неверный ответ.
Результаты подводятся следующим образом. Команды упорядочиваются по количеству
решенных задач, при равном числе решенных задач учитывается время, потраченное на
решение задач и количество попыток по решенным задачам.
2
XVI Турнир Архимеда
Командная олимпиада по программированию
3 декабря 2006 года
ФМШ №2007
Техническая часть проведения олимпиады.
Команды рассаживаются в компьютерные классы не более 7-8 команд в класс. Желательно,
чтобы команды работали в тех классах, где у них проходят уроки информатики. Команды
могут использовать языки Си или Паскаль. Программы, которые пишут участники, должны
считывать входные данные с клавиатуры и выводить ответ на экран строго в том формате,
который описан в условии задачи.
Для проведения олимпиады планируется использовать тестирующую систему, разработанную
в СУНЦ МГУ. Тестирующий сервер будет установлен в 405 аудитории. Для сдачи решений
все машины в компьютерных классах должны быть подключены к школьной сети. Сдача
решений будет производиться, используя программу-клиент: это один exe файл, который
можно положить либо на каждый компьютер, либо запускать прямо с сетевого диска. Для
тестирование сдаются исходные тексты программ, которые компилируются тестирующим
сервером компиляторами Delphi и Visual C++.
Для проведения олимпиады нужно по 1 человеку в каждый компьютерный класс, который
будет следить за тем, чтобы команды не общались между собой и решать технические
проблемы.
3
XVI Турнир Архимеда
Командная олимпиада по программированию
3 декабря 2006 года
ФМШ №2007
Приложение 2. Памятка участнику олимпиады.
Правила проведения олимпиады
Каждой команде из трех человек предоставляется комплект задач и один компьютер. Команды
в течение 4 часов решают предложенные задачи и сразу отправляют их на проверку.
Программа проверяется автоматической системой тестирования на наборе заранее
подготовленных тестовых примеров (входных данных). В случае если программа правильно
работает на всех приведенных примерах и укладывается при этом в установленный лимит
времени, задача считается решенной. В противном случае команде сообщается, сколько тестов
"прошла" программа (например, "6 point(s) gained" - пройдено 6 тестов) и результат
работы проверки программы на следующем тесте:
WA - wrong answer (неправильный ответ)
PE - presentation error (неправильный формат вывода; например, программа не выводит
ничего, или выводит текст вместо числа, или выводит несколько чисел, не разделяя их
пробелами или переводами строки и т.п.)
TL - time limit (превышен лимит времени работы на данном тесте)
CE - compilation error (ошибка при компиляции)
RE - run-time error (ошибка во время выполнения; например, происходит деление на
ноль, выход за пределы своей памяти и т.п.)
Команда имеет право исправлять свое решение и посылать его на проверку повторно
неограниченное количество раз.
Правила подведения итогов
В итоговой таблице результатов команды упорядочиваются по количеству решенных задач.
Команды, решившие одинаковое количество задач, упорядочиваются по дополнительному
параметру - штрафному времени.
Штрафное время команды вычисляется по следующему правилу. Если команда успешно сдала
задачу, то к штрафному времени прибавляется время сдачи задачи и по 20 минут за каждую
предшествующую неуспешную попытку сдачи этой задачи. Например, если задача сдана
успешно на 75-й минуте олимпиады с третьей попытки, то команда получит 75 штрафных
минут плюс 2x20 штрафных минут за две неуспешные попытки.
Общее количество тестов в разных задачах разное и участникам заранее не сообщается. Во
всех задачах первые тесты - это тесты, приведенные в примерах условия.
Технические вопросы
Команда имеет право использовать только компьютер, указанный в выданном ей
регистрационном листе, либо компьютер, указанный дежурным по аудитории. Вход в
Windows осуществляется с использованием логина и пароля, указанных в регистрационном
листе. Файлы требуется сохранять в директории или на диске, указанном в регистрационном
листе.
4
XVI Турнир Архимеда
Командная олимпиада по программированию
3 декабря 2006 года
ФМШ №2007
Для отправки решений задач на проверку используется программа client на рабочем столе
вашего компьютера. Запустив client, введите Login для входа в тестирующую систему,
указанный в регистрационном листе, оставьте поле Password пустым, в поле Server
введите vg.
При сдаче задачи выберите ее в списке двойным щелчком мыши, выберите тип файла (pas Паскаль, с - Си, cpp - Си++), и исходный файл (файл с текстом программы). Не нужно
посылать на проверку исполняемый (exe) файл! Через несколько секунд после отправки файла
тестирующая система сообщит вам результат проверки. При большой нагрузке на сервер
тестирование может занять несколько минут. Не отправляйте тот же файл на тестирование
повторно: это увеличивает ваше штрафное время!
Во время работы при получении сообщения "Server went down." подождите минуту и
запустите клиент повторно.
В случае возникновения других сообщений об ошибках немедленно обратитесь к дежурному.
Ваша программа должна выводить результат на экран в точном соответствии с форматом
выходных данных, указанным в задаче. В частности, ваша программа не должна выводить
ничего лишнего (как то "Vvedite x" и т.п.), выводимые числа требуется разделять
пробелами или переводами строк, если требуется вывести один из возможных ответов,
программа не должна выводить остальные и т. п.
Программы не должны очищать экран, останавливаться после вывода результата и т. п.
В программе на языке Паскаль нельзя использовать дополнительные модули Borland Pascal
(crt, …).
Программа на языке C должна заканчиваться с кодом возврата 0 (функция main должна иметь
тип int и заканчивать работу оператором return 0;).
По всем возникающим вопросам обращайтесь к дежурному по аудитории!
Вопросы по условиям задач задаются только в письменном виде, с указанием на листке с
вопросом N кабинета, N компьютера и названия команды. Вопросы передаются через
дежурного по аудитории.
Комментарии по условиям задач устно не даются!
5
XVI Турнир Архимеда
Командная олимпиада по программированию
3 декабря 2006 года
ФМШ №2007
Приложение 3. Список задач предлагавшихся для решения.
Задача A. День святого Франциска Ксавьера
Сегодня в индийском городке Старый Гоа отмечают День святого Франциска Ксавьера. Святой
Франциск Ксавьер – миссионер, член ордена иезуитов, считается величайшим католическим
миссионером Нового времени.
Мощи святого Франциска Ксавьера – духовного покровителя индийских христиан – покоятся в Старом
Гоа в известном католическом храме – Базилике Бом Иисус. Со дня постройки храма в 1605 году раз в
десять лет мощи святого выставляются для всеобщего обозрения.
Индийский крестьянин Вирмарам человек очень набожный он не упускал случая коснуться святых
мощей. Зная годы его жизни, определите, сколько раз он мог коснуться святых мощей (считается, что в
год своего рождения он не мог этого сделать, а в год смерти – мог).
Входные данные
Вводится два натуральных числа – год рождения и год смерти. Числа разделены
пробелом.
Выходные данные
Программа должна вывести одно число – сколько раз крестьянин мог коснуться святых мощей.
Примеры
1) Входные данные:
1610 1640
Выходные данные:
3
Комментарий: 1615, 1625, 1635 года.
2) Входные данные:
1615 1645
Выходные данные:
3
Комментарий: 1625, 1635, 1645. В 1615 году (год рождения) он коснуться
мощей не мог, а в 1645 – мог.
3) Входные данные:
1515 1545
Выходные данные:
0
Комментарий: Крестьянин умер до строительства храма.
Ограничения
Все входные данные – натуральные числа, не превосходящие 2000.
6
XVI Турнир Архимеда
Командная олимпиада по программированию
3 декабря 2006 года
ФМШ №2007
Задача B. Уравнение
Решите в целых числах уравнение ax  b  c , где a,b,c – данные целые числа: найдите все решения
или сообщите, что решений в целых числах нет.
Входные данные
Вводятся три числа a, b и c, разделенные пробелами.
Выходные данные
Программа должна вывести все решения уравнения в порядке возрастания, либо
NO SOLUTION (заглавными буквами), если решений нет. Если решений бесконечно
много, вывести MANY SOLUTIONS
Примеры
1) Входные данные:
1 0 0
Выходные данные:
0
Комментарий: . уравнение
2) Входные данные:
1 2 3
Выходные данные:
7
Комментарий: уравнение
3) Входные данные:
1 2 -3
Выходные данные:
NO SOLUTION
Комментарий: уравнение
x  0 имеет единственный корень x = 0.
x  2  3 имеет единственное решение x = 7.
x  2  3 решений не имеет.
Ограничения
Во всех тестовых примерах все входные данные – целые числа, не превосходящие
100.
7
XVI Турнир Архимеда
Командная олимпиада по программированию
3 декабря 2006 года
ФМШ №2007
Задача С. Бесконечная таблица
...
17 ...
10 18 ...
1
5
11 19 ...
2
6
12 20 ...
3
7
13 21 ...
4
8
14 22 ...
9
15 23 ...
16 24 ...
Натуральные числа записаны в (бесконечную) таблицу, как
показано на рисунке.
Требуется по заданному числу вывести всех его соседей
(числа, записанные в клетках сверху, справа, слева и снизу,
если таковые имеются)
Входные данные
Вводится одно натуральное число.
Выходные данные
Программа должна вывести все числа, записанные в соседних
клетках с данным, в порядке возрастания. Числа должны
разделяться пробелом.
25 ...
...
Примеры
1) Входные данные:
1
Выходные данные:
3
Комментарий: Снизу, сверху и справа от 1 чисел нет, а справа стоит число 3.
2) Входные данные:
7
Выходные данные:
3 6 8 13
Комментарий: см. рисунок.
N=10
N=7
- - 17
2 6 12
- 10 18
5 11 19
3 7 13
4 8 14
3) Входные данные:
10
Выходные данные:
11 18
Комментарий: см. рисунок.
Ограничения
Во всех тестовых примерах данное число не превосходит 1 000 000 000.
(В Borland Pascal для работы с большими целыми числами вместо типа integer используйте тип longint.)
8
XVI Турнир Архимеда
Командная олимпиада по программированию
3 декабря 2006 года
ФМШ №2007
Задача D. Вася
Вася давно мечтает выиграть олимпиаду по информатике. У него всего три слабых
места: циклы, массивы и строки. Перед сегодняшним турниром Вася провёл
интенсивную подготовку, в ходе которой он решил A задач на циклы, B задач на
массивы и C задач на строки. Впоследствии выяснилось, что из решённых задач D
были и на циклы, и на массивы, E – на циклы и на строки, F – на строки и на массивы.
И даже было G задач, которые включали и циклы, и строки, и массивы. Помогите
Васе вычислить, сколько всего различных задач он решил.
Входные данные
Вводятся числа A, B, C, D, E, F и G, разделенные пробелами.
Выходные данные
Выведите одно число – число задач, решенных Васей.
Примеры
1) Входные данные:
0000000
Выходные данные:
0
Комментарий не требуется.
2) Входные данные:
1110000
Выходные данные:
3
Комментарий: Вася решил по одной задаче на циклы, массивы и строки. При
этом, ни одной задачи на две темы сразу он не решил. Следовательно, он
решил три разных задачи.
3) Входные данные:
1111111
Выходные данные:
1
Комментарий: Вася решил всего одну задачу на все три темы сразу.
Ограничения
Во всех тестовых примерах все входные данные корректны и не превосходят 1 000. Числа могут быть
равны нулю.
9
XVI Турнир Архимеда
Командная олимпиада по программированию
3 декабря 2006 года
ФМШ №2007
Задача E. Бегуны
Два бегуна тренируются на кольцевой дорожке легкоатлетического стадиона длиной
400 метров. Они начинают бег из одной точки и бегают по заданиям тренера
указанное число минут с указанной скоростью (под скоростью понимается сколько
метров по дорожке спортсмен пробегает за минуту). Требуется определить
расстояние, на котором окажутся бегуны друг от друга в конце тренировки
(расстоянием называется длина более короткой части дуги дорожки между
спортсменами).
Входные данные
В первой строке вводится одно число – количество заданий, которые каждый
спортсмен получил от тренера (оба спортсмена получили одинаковое количество
заданий). В каждой из следующих строк записано задания для спортсменов в
следующем формате:
v1 t1 v2 t2
где v1 – скорость для первого игрока (в м/мин), t1 – время, на протяжении которого
спортсмен должен бежать со скоростью v1, v2 и t2 – соответствующие величины для
второго игрока. Скорости – положительные числа, если требуется бежать в
направлении по часовой стрелке, и отрицательные, если требуется бежать против
часовой стрелки.
Выходные данные
Выведите одно число – расстояние между бегунами в конце тренировки.
Примеры
1) Входные данные:
2
8000 1 8000 1
8000 10 8001 10
Выходные данные:
10
Комментарий: Тренер выдал каждому спортсмену по два задания. Сначала они
оба бегут 1 минуту со скоростью 8000 м/мин по часовой стрелке, а затем 10 минут –
один со скоростью 8000 м/мин, а второй – со скоростью 8001 м/мин. Поэтому в конце
тренировки расстояние между ними будет равняться 10 метров (во второй части
тренировки второй спортсмен каждую минуту пробегает на метр больше).
2) Входные данные:
1
50 4 -100 1
Выходные данные:
100
Комментарий: Первый бегун пробегает по 50 метров за минуту в течение 4 минут,
то есть всего 200 метров. Второй бегун пробегает за одну минуту 100 метров в
противоположном направлении. Поскольку длина круга – 400 метров, то расстояние
между бегунами в конце тренировки – 100 метров.
3) Входные данные:
4
1000 4 1000 4
2000 1 2000 1
1223 7 1223 7
1 1 1 1
10
XVI Турнир Архимеда
Командная олимпиада по программированию
3 декабря 2006 года
ФМШ №2007
Выходные данные:
0
Комментарий: Поскольку бегуны всегда получали одинаковые задания от тренера,
они окажутся на финише в одной точке. Расстояние между ними будет равно нулю.
Ограничения
Все входные данные целые и по модулю не превосходят 30 000. Количество заданий не меньше 1.
11
XVI Турнир Архимеда
Командная олимпиада по программированию
3 декабря 2006 года
ФМШ №2007
Задача F. Шахматное домино
Комплект шахматного домино состоит из 32 костяшек 2x1, каждый из квадратов которой окрашен в
черный или белый цвет (часть костяшек состоит из двух белых квадратов, часть – из двух черных, а
часть из одного белого и одного черного). Комплект такого домино выложен на шахматную доску.
Разрешается поворачивать костяшки домино на 180 градусов (менять местами их квадраты), оставляя
каждую костяшку на своем месте. Требуется выяснить, можно ли так повернуть часть костей домино,
чтобы в каждом горизонтальном ряду были квадраты только одного цвета.
Входные данные
Вводится 8 строк по 8 чисел. Каждое число соответствует номеру доминошки, которая
покрывает данную клетку. Число положительное, если квадрат доминошки белый и
отрицательное – если черный.
Выходные данные
Требуется вывести одно слово – YES или NO (заглавными буквами).
Примеры (для простоты примеры приводятся для доски 4x4; программа должна работать
только для доски 8x8)
1) Входные данные:
1 -1 2 2
4 4 5 5
6 6 7 7
8 8 3 3
Выходные данные:
NO
Комментарий: В левом углу лежит горизонтальная доминошка, квадраты
которой разного цвета. 1 – квадрат белого цвета, -1 – квадрат черного цвета.
Поэтому первую горизонталь нельзя сделать одноцветной.
2) Входные данные:
1 2 3 -4
-1 -2 -3 4
5 5 8 8
-7 -7 -6 -6
Выходные данные:
YES
Комментарий: достаточно перевернуть доминошку 4.
Ограничения
Доминошки нумеруются числами от 1 до 32 в произвольном порядке.
12
XVI Турнир Архимеда
Командная олимпиада по программированию
3 декабря 2006 года
ФМШ №2007
Задача G. Негласный палиндром
Возьмем произвольное слово и проделаем с ним следующую операцию: поменяем
местами его первую согласную букву с последней согласной буквой, вторую
согласную букву с предпоследней согласной буквой и т.д. Если после этой операции
мы вновь получим исходное слово, то будем называть такое слово негласным
палиндромом. Например, слова sos, rare, rotor, gong, karaoke являются негласными
палиндромами.
Вам требуется написать программу, которая по данному слову определяет, является
ли оно негласным палиндромом.
Входные данные
Вводится одно слово.
Выходные данные
Программа должна вывести YES, если введенное слово является негласным
палиндромом, и NO в противном случае.
Примеры
1) Входные данные:
tennete
Выходные данные:
YES
Комментарий: Первая согласная буква – t – меняется местами с последней,
тоже t, вторая согласная буква – n – меняется местами с предпоследней, тоже
n.
2) Входные данные:
karaoke
Выходные данные:
YES
Комментарий: Первая согласная буква – k – меняется местами с последней,
тоже k, вторая согласная буква является одновременно и предпоследней,
поэтому остается на месте.
3) Входные данные:
disk
Выходные данные:
NO
Комментарий: это слово не является негласным палиндромом, поскольку при
указанных перестановках букв получается слово kisd.
Ограничения
Во всех тестовых примерах слово записано строчными латинскими буквами и состоит
из не более чем 20 символов.
13
XVI Турнир Архимеда
Командная олимпиада по программированию
3 декабря 2006 года
ФМШ №2007
Задача H. Тапочки
У меня в прихожей стоят в ряд 20 тапочек – 10 левых и 10 правых. Приходя домой, я переобуваюсь и
выбираю два тапочка – левый и правый – в которые мне удобнее всего засунуть ноги. Естественно, что
левый тапочек должен стоять левее правого, и расстояние (количество других тапочек) между ними
должно быть как можно меньше. Напишите программу, которая вычисляет, сколько же тапочек стоит
между теми, которые мне удобнее всего надеть.
Входные данные
Во входном файле записано 10 нулей и 10 единиц в некотором порядке. Единица соответствует левому
тапочку, 0 – правому тапочку. Числа разделены пробелами.
Выходные данные
Программа должна вывести количество тапочек между самыми удобными тапочками, или -1, если
таких нет.
Пример
Входные данные:
10101010101010101010
Выходные данные:
0
Комментарий: Можно, например, надеть первый (левый) и второй (правый) тапочек,
между которыми нет других тапочек.
14
XVI Турнир Архимеда
Командная олимпиада по программированию
3 декабря 2006 года
ФМШ №2007
Задача I. Карточки
Вася выложил в ряд слева направо 100 карточек, на которых написаны числа 1, 2, 3,
…, 100 соответственно (числами вниз). После этого он поменял местами карточки, на
которых написаны числа i и j. Петя открывает карточки по очереди слева направо.
Какое минимальное количество карточек ему придется открыть, чтобы точно
выяснить, какие карточки поменял местами Вася?
Входные данные
Во входном файле записаны два числа i и j. Числа записаны через пробел.
Выходные данные
Требуется вывести одно число – минимальное количество карточек, которое достаточно открыть Пете.
Ограничения
Во всех тестовых примерах натуральные числа i и j различные и лежат в пределах от
1 до 100.
15
XVI Турнир Архимеда
Командная олимпиада по программированию
3 декабря 2006 года
ФМШ №2007
Задача J. Волк и семеро козлят
У волка есть K качанов капусты. Он решил завести себе стадо коз. Каждая коза съедает каждое утро по
вилку капусты, а умирает с голоду за три недели. Волк съедает одну козу на обед один раз в неделю, а
умирает с голоду через 4 недели. Сколько коз следует завести волку, чтобы прожить как можно
дольше? Изначально волк и все козы голодные (т.е. в первый день каждая коза хочет позавтракать, а
затем волк обедает; до этого козы ели накануне утром, а волк – неделю назад). Если в какой-то день
кочанов оказывается меньше, чем коз, то самые проворные козы съедают по качану. Волк падалью не
питается.
Входные данные
Вводится одно число K – количество кочанов капусты у волка.
Выходные данные
Выведите одно число – оптимальное количество коз. Если ответов несколько,
выведите наименьший из них (волк предпочитает экономить деньги при покупке коз).
Примеры
1) Входные данные:
0
Выходные данные:
3
Комментарий: Сколько бы коз не купил волк, они погибнут от голода через 3
недели. Поэтому волк успеет съесть только 3 козы – в начале первой, второй и
третей недель соответственно.
2) Входные данные:
10
Выходные данные:
4
Комментарий: Если волк купит меньше четырех коз, он сможет пообедать
максимум трижды. Если волк купит 4 и более коз, то в первые дни они съедят
всю капусту, и смогут дожить максимум до начала четвертой недели. Таким
образом, волк сможет пообедать максимум четырежды, значит, более четырех
коз покупать незачем.
Ограничения
Во всех тестовых примерах количество кочанов – целое неотрицательное число, не превосходящее
30 000.
16
XVI Турнир Архимеда
Командная олимпиада по программированию
3 декабря 2006 года
ФМШ №2007
Задача K. Автомат по продаже билетов
В Московском метрополитене вновь появляются автоматы для продажи билетов. Вас
просят написать программу, которая будет рассчитывать, какую сдачу и какими
купюрами и монетами требуется выдать пассажиру.
Входные данные
Во входном файле записана сначала стоимость билета, который хочет приобрести пассажир, затем
общее количество купюр и монет, которые он опустил в автомат, а затем достоинства каждой из этих
купюр и монет. Входные данные записаны в одной строке и разделены пробелами. Известно, что
сумма всех купюр больше, чем стоимость билета.
Выходные данные
Программа должна вычислить, какими купюрами и монетами можно выдать сдачу, и вывести
достоинство каждой из этих купюр или монет в произвольном порядке. Автомат может выдавать сдачу
купюрами в 10, 50, 100 и 500 рублей, а также монетами в 1, 2 и 5 рублей. Если решений несколько,
требуется выдать одно любое из них. Если решений нет, требуется выдать текст:
Sorry! Our monetary system is not perfect!
Please, choose another way to pay!
Thank you!
Примеры
1) Входные данные:
100 1 500
Выходные данные:
100 100 100 100
Комментарий: Пассажир хочет купить билет стоимостью 100 рублей. Для этого
он опустил в автомат одну купюру достоинством 500 рублей и получил в качестве
сдачи 4 купюры по 100 рублей. Возможны и другие варианты ответа, например:
100 100 100 50 10 10 10 10 10
2) Входные данные:
100 5 1 10 1 10 100
Выходные данные:
1 10 1 10
Комментарий: Пассажир хочет купить билет стоимостью 100 рублей. Но
почему-то он опустил в автомат не только купюру в 100 рублей, но еще две монеты
по рублю и две купюры по 10 рублей. Этот излишек и будет возвращен ему в
качестве сдачи. Конечно, возможны и другие варианты ответа.
Ограничения
Во всех тестовых примерах стоимость билета – натуральное число, не
превосходящее 1 000 рублей, количество купюр и монет не более 50, достоинство
каждой не превосходит 500 рублей. Общая сумма денег, опущенная в автомат
покупателем, превосходит стоимость билета.
17
Download