Document 408004

advertisement
Московская командная олимпиада по программированию для учащихся 8 классов, 2 июня 2007 года, СУНЦ МГУ
Во всех задачах входные данные вводятся с клавиатуры, выходные данные выводятся на экран.
Каждая программа должна работать на каждом тестовом примере не более 1 секунды.
Ограничение по памяти – 64 Мб.
Задача A. Жизнь в квадрате
В некоторых клетках квадрата N x N живут микроорганизмы (не более одного в одной клетке). Каждую секунду
происходит следующее:
– все микроорганизмы, у которых менее 2-х соседей, умирают от скуки (соседями называются микроорганизмы,
живущие в клетках, имеющих общую сторону или вершину);
– все микроорганизмы, у которых более 3-х соседей, умирают от перенаселенности;
– на всех пустых клетках, у которых ровно в трех соседних клетках жили микроорганизмы, появляются новые
микроорганизмы.
Все изменения происходят одновременно, то есть для каждой клетки сначала выясняется ее судьба, а затем происходят
изменения сразу во всех клетках.
Требуется по данной конфигурации определить, во что она превратится через T секунд.
Входные данные
В первой строке вводятся два натуральных числа – N (1 ≤ N ≤ 10) и T (1 ≤ T ≤ 100),
Далее записано N строчек по N чисел, описывающих начальную конфигурацию (0 – пустая клетка, 1 – микроорганизм).
Числа в строках разделены пробелами.
Выходные данные
Требуется вывести N строк по N чисел – описание конфигурации через T секунд (в том же формате, как и во входных
данных).
Примеры
Входные данные
3 1
0 0 0
1 1 1
0 0 0
4 100
0 0 0 0
0 1 1 0
0 1 1 0
0 0 0 0
2 10
1 0
0 1
Выходные данные
0 1 0
0 1 0
0 1 0
0
0
0
0
0
1
1
0
0
1
1
0
0
0
0
0
0 0
0 0
Задача B. И снова лифт
В торговом центре этажи нумеруются так: …, –3, –2, –1, 1, 2, 3, … (нулевого этажа нет!). Вася спустился на лифте с этажа
с номером A на B этажей, а затем поднялся на лифте на C этажей. Требуется определить, на каком этаже он оказался.
Входные данные
Вводятся три числа A, B и C.
А – целое число от –100 до 100, не равное нулю.
B и С – натуральные числа, не превосходящие 100.
Выходные данные
Выведите одно число – номер этажа, на котором окажется Вася.
Примеры
Входные данные
5 2 10
3 10 1
Выходные данные
13
–7
1
Московская командная олимпиада по программированию для учащихся 8 классов, 2 июня 2007 года, СУНЦ МГУ
Задача С. Календарь
Календарь на июнь 2007 года, висящий у меня на стене, выглядит следующим образом:
Пн Вт Ср Чт Пт
1
4 5 6 7 8
11 12 13 14 15
18 19 20 21 22
25 26 27 28 29
Сб
2
9
16
23
30
Вс
3
10
17
24
В этом календаре числа располагаются в 5 строк. Вам требуется написать программу, которая определит, сколько строк
чисел будет в подобном календаре на любой заданный месяц.
Входные данные
Вводятся два числа D и F.
D – количество дней в месяце, натуральное число от 28 до 31.
F – номер дня недели, на который приходится первое число данного месяца (1 – понедельник, 2 – вторник, … , 7 –
воскресенье).
Выходные данные
Выведите количество строк чисел в календаре на указанный месяц.
Примеры
Входные данные
30 5
Выходные данные
5
Задача D. Ресторан
В одном курином ресторане можно купить
1 ножку + 1 крыло,
1 ножку + 1 бедро,
1 бедро,
2 крыла,
или 3 крыла.
Требуется определить, можно ли купить ровно k крыльев, n ножек и b бедер.
Входные данные
Вводятся три числа k, n, b. Все числа целые неотрицательные, не превосходящие 100.
Выходные данные
Выведите слово YES, если купить указанный набор можно, NO – если нельзя (заглавными латинскими буквами).
Примеры
Входные данные
1 1 1
1 3 1
Выходные данные
YES
NO
2
Московская командная олимпиада по программированию для учащихся 8 классов, 2 июня 2007 года, СУНЦ МГУ
Задача E. Пароль
Пароль называется криптостойким, если он включает в себя и строчные латинские буквы, и заглавные латинские буквы,
и цифры, при этом его длина должна быть не менее 8 символов.
Требуется по данному паролю определить, является ли он криптостойким.
Входные данные
Вводится одна строка, состоящая только из латинских букв и цифр. Количество символов в строке не превышает 100.
Выходные данные
Выведите слово YES, если указанный пароль является криптостойким и NO – в противном случае (заглавными латинскими
буквами).
Примеры
Входные данные
1aA
AaBbCc12
AAAaaaAAA
Выходные данные
NO
YES
NO
Задача F. Парикмахерская
В парикмахерской работают три мастера. Каждый тратит на одного клиента ровно полчаса, а затем сразу переходит к
следующему, если в очереди кто-то есть, либо ожидает, когда придет следующий клиент.
Даны времена прихода клиентов в парикмахерскую (в том порядке, в котором они приходили). Требуется для каждого
клиента указать время, когда он выйдет из парикмахерской.
Входные данные
В первой строке вводится натуральное число N, не превышающее 100 – количество клиентов.
В следующих N строках вводятся времена прихода клиентов – по два числа, обозначающие часы и минуты (часы – от 0
до 23, минуты – от 0 до 59). Времена указаны в порядке возрастания (все времена различны).
Гарантируется, что всех клиентов успеют обслужить до полуночи.
Выходные данные
Требуется вывести N пар чисел: времена выхода из парикмахерской 1-го, 2-го, …, N-го клиента (часы и минуты).
Примеры
Входные данные
3
10 0
10 1
10 2
5
1 0
2 0
2 1
2 2
2 3
Выходные данные
10 30
10 31
10 32
1
2
2
2
3
3
30
30
31
32
0
Московская командная олимпиада по программированию для учащихся 8 классов, 2 июня 2007 года, СУНЦ МГУ
Задача G. Пересадки
Петя каждый день ездит на работу на метро по одному и тому же маршруту с двумя пересадками. Он уже давно запомнил,
сколько времени занимает проезд на нужном ему отрезке пути по каждой из трех линий. Также он выучил расписание поездов на
всех трех линиях, по которым он ездит. Помогите Пете найти такое время входа в метро, чтобы поездка на работу занимала как
можно меньше времени.
Входные данные
В первой строке вводятся времена поездки по первой, второй и третьей линии (до пересадки) в минутах. Все времена –
натуральные числа и не превышают 1140 минут. Считается, что пересадка не занимает времени.
Во второй строке вводятся количество поездов на первой линии, на второй линии и на третьей линии – натуральные числа,
не превосходящие 100.
В третьей строке вводятся времена отправления поездов первой линии со станции, на которой садится Петя (по два числа
на каждый поезд – часы и минуты).
В четвертой строке в том же формате вводятся времена отправления поездов второй линии со станции, на которую Петя
делает первую пересадку.
В пятой строке – аналогичное расписание поездов третьей линии со станции, на которую Петя делает вторую пересадку.
Находиться в метро с часу ночи до 6 часов утра запрещается (в 6 часов утра на поезд садиться можно). Расписание
движения поездов таково, что Петя может добраться до работы, не выходя из метро.
Выходные данные
Выведите время (часы и минуты), в которое Петя может войти в метро, чтобы добраться до работы за наименьшее время.
Если решений несколько, выведите любое из них.
Примеры
Входные данные
10 20 30
2 1 3
10 0 12 0
11 0
12 0 19 0 15 0
Выходные данные
10 0
Задача H. Кубики
Родители подарили мальчику Пете очень много одинаковых кубиков. Наиболее интересным сооружением из кубиков Петя
счел двусторонние лесенки.
В основании (нижнем ряду) такой лесенки расположено N кубиков, а каждый следующий ряд
кубиков укладывается на предыдущий так, что один кубик укладывается ровно на один
нижестоящий кубик, а по крайней мере на самый правый и самый левый кубики предыдущего ряда
новые кубики не кладутся (чтобы получилась ступенька).
Петя поручил старшему брату подсчитать, сколько можно построить различных лесенок, состоящих из ровно K рядов
кубиков, в основании которых лежит ровно N кубиков. При этом, если одну лесенку можно получить из другой путем
зеркального отображения, то они все равно считаются различными.
Входные данные
Вводятся два числа N и K (1 ≤ N ≤ 50, 1 ≤ K ≤ 50).
Выходные данные
Выведите одно число – количество различных лесенок.
Примеры
Входные данные
5 2
2 2
Выходные данные
6
0
4
Download