5
XV Олимпиада среди школьников г. Петрозаводска по Информатике http://media.karelia.ru/~olimp/ Организаторы: Комитет по образованию, Петрозаводский государственный университет Спонсоры Олимпиады: группа «Ноутис», корпорация «Kraftway», ООО «Диаско», салон «F1», Карельский Региональный Центр ФИО, РЦ НИТ ПетрГУ, магазин «Экслибрис» Теоретический тур (6 задач) Количество баллов за задачу определяется количеством участников, решивших ее чем меньше решивших, тем больше баллов. Жюри оценивает решение в процентах, например, наполо- вину решенная задача оценивается в 50% от количества баллов задачи. Запрещается: пользоваться книгами, дискетами, мобильными телефонами и другими средст- вами связи. Если в задаче требуется предложить алгоритм, то записать его можно по-разному лучше все- го словесно или на псевдокоде, но можно и блок-схемой или на языке программирования, но это не желательно. Главное, чтобы были пояснения или комментарии. Если программа написана крайне неясно, она не засчитывается. Удачи! Задача 1. “Сумма кодов”. Выбрать слово, имеющее наименьшую сумму кодов символов в таблице кодировки ASCII (ис- пользуются строчные буквы). Ответ обоснуйте. beer bear type deer hair Задача 2. “Два берега”. К реке подошли два мальчика и один взрослый. У берега они увидели маленькую лодку, вме- щавшую либо двух мальчиков, либо одного взрослого. Какое минимальное время требуется на пе- реправу, если каждая поездка через реку (в одну сторону) занимает 20 минут? Ответ обоснуйте. Задача 3. “Приветствие племен”. Алфавит одного племени состоит из Х символов, алфавит другого содержит в четыре раза больше символов. Племена обменялись приветствиями. Каждое по 100 символов. На сколько бит информации одно приветствие больше другого? Ответ обоснуйте. Задача 4. “Количество команд”. Программист написал программу на языке машинных команд, которая последовательно раз- мещается в памяти начиная с нулевого адреса. Каждая команда занимает 4 байта памяти. Шестна- дцатеричный адрес последней команды в программе равен 28. Сколько команд содержит эта про- грамма? Ответ обоснуйте.

Задания XV городской олимпиады школьников г. Петрозаводска по информатике

Embed Size (px)

Citation preview

Page 1: Задания XV городской олимпиады школьников г. Петрозаводска по информатике

XV Олимпиада среди школьников г. Петрозаводска по Информатике http://media.karelia.ru/~olimp/

Организаторы: Комитет по образованию, Петрозаводский государственный университет Спонсоры Олимпиады: группа «Ноутис», корпорация «Kraftway», ООО «Диаско», салон «F1», Карельский Региональный Центр ФИО, РЦ НИТ ПетрГУ, магазин «Экслибрис»

Теоретический тур (6 задач) Количество баллов за задачу определяется количеством участников, решивших ее – чем

меньше решивших, тем больше баллов. Жюри оценивает решение в процентах, например, наполо-вину решенная задача оценивается в 50% от количества баллов задачи.

Запрещается: пользоваться книгами, дискетами, мобильными телефонами и другими средст-вами связи.

Если в задаче требуется предложить алгоритм, то записать его можно по-разному – лучше все-го словесно или на псевдокоде, но можно и блок-схемой или на языке программирования, но это не желательно. Главное, чтобы были пояснения или комментарии. Если программа написана крайне неясно, она не засчитывается. Удачи!

Задача 1. “Сумма кодов”. Выбрать слово, имеющее наименьшую сумму кодов символов в таблице кодировки ASCII (ис-

пользуются строчные буквы). Ответ обоснуйте. beer bear type deer hair

Задача 2. “Два берега”. К реке подошли два мальчика и один взрослый. У берега они увидели маленькую лодку, вме-

щавшую либо двух мальчиков, либо одного взрослого. Какое минимальное время требуется на пе-реправу, если каждая поездка через реку (в одну сторону) занимает 20 минут? Ответ обоснуйте.

Задача 3. “Приветствие племен”. Алфавит одного племени состоит из Х символов, алфавит другого содержит в четыре раза

больше символов. Племена обменялись приветствиями. Каждое по 100 символов. На сколько бит информации одно приветствие больше другого? Ответ обоснуйте.

Задача 4. “Количество команд”. Программист написал программу на языке машинных команд, которая последовательно раз-

мещается в памяти начиная с нулевого адреса. Каждая команда занимает 4 байта памяти. Шестна-дцатеричный адрес последней команды в программе равен 28. Сколько команд содержит эта про-грамма? Ответ обоснуйте.

Page 2: Задания XV городской олимпиады школьников г. Петрозаводска по информатике

XV Олимпиада среди школьников г. Петрозаводска по Информатике http://media.karelia.ru/~olimp/

Организаторы: Комитет по образованию, Петрозаводский государственный университет Спонсоры Олимпиады: группа «Ноутис», корпорация «Kraftway», ООО «Диаско», салон «F1», Карельский Региональный Центр ФИО, РЦ НИТ ПетрГУ, магазин «Экслибрис»

Задача 5. “Новобранцы”. На первом построении вновь призванные в армию солдаты построились в шеренгу. По коман-

де старшины «Напра-во!» некоторые солдаты повернулись направо, а некоторые — налево (на 90°). Каждый солдат, оказавшийся лицом к лицу со своим соседом считает, что совершил ошибку и разворачивается на 180°.

Ваша задача — помочь старшине, объяснив, будут ли солдаты вертеться бесконечно или мож-но указать максимально возможное количество разворотов новобранцев. Возможна ли (если да, при каких условиях) ситуация, когда в конце концов все солдаты построятся правильно? Ответ обоснуйте.

Задача 6. “ Лягушка”.

Квадратное лесное болото разделено на 8*8 одинаковых клеток. На одной из клеток сидит ля-гушка, а над какой-то другой клеткой летает комар. Лягушка хочет съесть комара, а комар стара-ется от нее улететь. Перемещаются лягушка и комар по очереди, первый ход за лягушкой. За один прыжок лягушка перемещается на любую из клеток по горизонтали или вертикали, не обязательно соседнюю. Комар за один перелет перемещается на одну из 8 соседних клеток. Если лягушка в прыжке пролетает через клетку, над которой находится комар, или прыгает на клетку, над которой летает комар, то она съедает комара. В последнем прыжке лягушка может перемещаться по диаго-нали на одну клетку. Требуется составить оптимальный алгоритм перемещения лягушки для того, чтобы съесть комара. Отсчет начинается с левого верхнего угла. Ответ обоснуйте.

Page 3: Задания XV городской олимпиады школьников г. Петрозаводска по информатике

XV Олимпиада среди школьников г. Петрозаводска по Информатике http://media.karelia.ru/~olimp/

Организаторы: Комитет по образованию, Петрозаводский государственный университет Спонсоры Олимпиады: группа «Ноутис», корпорация «Kraftway», ООО «Диаско», салон «F1», Карельский Региональный Центр ФИО, РЦ НИТ ПетрГУ, магазин «Экслибрис»

Практический тур (5 задач) Поддерживаемые языки программирования: ПАСКАЛЬ (bp), СИ (bc) или БЕЙСИК (qb, gwba-

sic). При написании программ настоятельно рекомендуется следовать следующим правилам:

Файлы следует сохранять в указанном Вам каталоге, лучше войти туда и, находясь там, запус-кать программы bp, bc, qb.

Имена файлам программ с решениями задач давать как РЕГНОМ_НОМЗАД.РАСШ, например 23_2.pas, где 23 – номер участника, 2 – номер практического задания, .pas – расширение файла.

Советуем регулярно сохранять файлы, чтобы не потерять их в случае зависания компьютера.

Данные считываются из файла INPUT.TXT, где они следуют в порядке их упоминания в усло-вии задачи, и находятся каждое на отдельной строке.

Если Вы не умеете работать с файлами, то разрешается ввод данных с клавиатуры при обяза-тельном выводе подсказок о том, какие данные нужно ввести. Например, Введите длину конверта: А = _

Результат работы выводится на экран вместе с пояснениями: Письмо нужно сложить по-полам 5 раз(а).

Если не будет подсказок и пояснений при вводе и выводе данных, то такие программы не бу-дут засчитываться.

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

вами связи.

Задача 1. “Фишки”. Рассмотрим шахматную доску размером NxN. Какое наименьшее число фишек нужно поста-

вить на клетки шахматной доски для того, чтобы на каждой прямой, проходящей через центр про-извольной клетки и параллельной каким-либо сторонам или диагоналям доски, стояла хотя бы од-на фишка? (Фишки ставятся в центры клеток).

Пример входных данных: 4 Пример выходных данных: 8

Задача 2. “Слова”. Студенты и школьники очень любят играть на занятиях в следующую игру, которая называет-

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

Page 4: Задания XV городской олимпиады школьников г. Петрозаводска по информатике

XV Олимпиада среди школьников г. Петрозаводска по Информатике http://media.karelia.ru/~olimp/

Организаторы: Комитет по образованию, Петрозаводский государственный университет Спонсоры Олимпиады: группа «Ноутис», корпорация «Kraftway», ООО «Диаско», салон «F1», Карельский Региональный Центр ФИО, РЦ НИТ ПетрГУ, магазин «Экслибрис»

В первой строке входных данных записано выбранное для игры слово. Далее следует число K

– количество слов в словаре. В последующих K строках задан "словарь" - множество слов, кото-рые мы считаем осмысленными. Их количество не превышает 100. Слово - это последователь-ность не более чем 255 маленьких латинских букв. Каждое слово записано в отдельной строке. Слова в словаре, как это ни странно, не обязательно располагаются в алфавитном порядке, но не повторяются.

Результатом работы программы должно быть количество полученных слов и сам список слов, которые можно получить из исходного слова. Слова должны быть выданы в том же порядке, в ко-тором они встречаются в словаре. Каждое слово должно быть записано в отдельной строке.

Пример входных данных: soundblaster 10 sound blaster soundblaster master last task sos test bonus done

Пример выходных данных: 7 sound blaster soundblaster last sos bonus done

Задача 3. “Змейка”. На шахматной доске размером NxN расставлено k пронумерованных фишек. Ежик, который

собирает эти фишки, выходит из клетки с координатами (1,1) и должен собрать все фишки в по-рядке возрастания их номеров. Из клетки с координатами (x,y) ежик может переместиться только в одну из четырех соседних, т.е. в одну из клеток с координатами (x+1,y), (x-1,y), (x,y+1) или (x,y-1), конечно с соблюдением условия, что он не должен выходить за границы доски. Требуется оп-ределить, какое минимальное количество ходов нужно сделать, чтобы собрать все фишки. Если ежик проходит через клетку, где содержится фишка с большим номером, чем он сейчас должен взять, то ничего не происходит (он просто проходит, а фишка остается стоять).

Вводятся два числа N и k. Затем вводятся k пар координат (x,y) соответствующих фишек, т.е. сначала для первой фишки, затем для второй фишки и т.д.

Ответом должно быть единственное число – минимальное количество шагов, которое потре-буется для сбора всех фишек в порядке возрастания их номеров.

Пример входных данных: 4 3 3 3 1 4 2 1 Пример выходных данных: 11

Page 5: Задания XV городской олимпиады школьников г. Петрозаводска по информатике

XV Олимпиада среди школьников г. Петрозаводска по Информатике http://media.karelia.ru/~olimp/

Организаторы: Комитет по образованию, Петрозаводский государственный университет Спонсоры Олимпиады: группа «Ноутис», корпорация «Kraftway», ООО «Диаско», салон «F1», Карельский Региональный Центр ФИО, РЦ НИТ ПетрГУ, магазин «Экслибрис»

Задача 4. “Густой лес”. На плоскости во всех точках с целочисленными координатами от 1 до N стоят деревья - всего

N2 деревьев. Путник находится в точке с координатами (x1,y1), где x1,y1>0 и хоть одна из этих ко-ординат больше N (чтобы не оказаться в самом лесу). Требуется определить, видно ли путника из точки с координатами (0,0). Путника не видно, если на прямой, проходящей через точку (0,0) и точку (x1,y1), есть хоть одно дерево.

На вход подается три целых числа – N, x1, y1. Требуется вывести YES, если путника видно и NO иначе. Пример входных данных1 5 6 2 Пример выходных данных1 NO

Пример входных данных2 5 7 6 Пример выходных данных2 YES

Задача 5. “Боулинг”. При игре в боулинг дается десять подходов, каждый из них состоит из двух бросков. Перед

каждым подходом на дорожке выставляется 10 кегель. Цель – сбить как можно больше за два бро-ска. Если с первого броска все сбить не удалось, то у вас есть второй бросок, чтобы попасть по ос-тавшимся кеглям. Если будут сбиты все десять кегель с первого броска в подходе, то это называ-ется «strike». Если десять кегель сбиты за два броска, то это «spare». Количество кегель, сбитое в подходе, прибавляется к общей сумме игрока. Но если в предыдущем броске у вас был «strike» или «spare», то еще будут получены дополнительные очки.

Если предыдущий бросок был «strike», то количество сбитых кегель в текущем подходе умно-жается на два. Если же два предыдущих броска были «strike», то количество сбитых кегель в те-кущем подходе умножается на три. Если предыдущий бросок был «spare», то на два умножается только количество кегель сбитых первым броском в текущем подходе (например, пусть предыду-щий был «spare» и в этот подход игрок двумя бросками сбил всего 8 кегель, 5 и 3 соответственно, тогда к общей сумме будет прибавлено 5*2+3=13 очков).

Вам дана таблица десяти бросков и требуется посчитать, какая будет итоговая сумма. Вводится 10 пар чисел, по одной на подход. Каждое из чисел – количество кегель, сбитое в со-

ответствующем броске (естественно, что каждое число может быть от 0 до 10). Если был «strike», то строка будет такая: 10 0 (потому что второй бросок уже не нужен, т.к. сбиты все кегли, но для таблицы формально будем считать, что вторым броском было сбито 0 кегель).

Требуется вывести одно число – итоговая сумма Пример входных данных: 6 4 8 2 9 0 0 10 10 0 10 0 6 0 7 3 10 0 9 1

Пример выходных данных: 164 Пояснение: у игрока было 5 «spare» - 1-й, 2-й, 4-й,

8-й и 10-й подходы и три «strike» - 5-й, 6-й и 9-й подхо-ды. Промежуточные итоговые суммы были следующие:

10 (+ 6+4) 28 (+ 2*8+2) 46 (+ 2*9+0) 56 (+ 10) 76 (+ 2*10+0) 96 (+ 2*10+2*0) 114 (+ 3*6+3*0) 124 (+ 7+3) 144 (+ 2*10+0) 164 (+ 2*9+2*1)