XI городская олимпиада школьников
Санкт-Петербурга по информатике

1996 год

Районный тур

Задачи

Задача A. Задача о строке

Во входном потоке расположена строка, cостоящая из нулей и единиц. Требуется найти длину наибольшей подстроки вида ABCD, где

На вход программе подается последовательность символов, составляющих строку. Признаком конца служит символ "." (точка). Длина строки заранее не определена. Строка может быть такой длинной, что не поместится в память вашего компьютера. Программа должна прочитать строку ровно 1 раз. Например, для строки "0100100000001001111111110." ответом будет 19.

Задача B. Пифагорово дерево

Напишите программу, которая выводит на графический экран дерево, изображенное на рисунке. Угол между парой исходящих веток равен 90 градусов. Каждая ветка (исключая ствол) имеет длину, равную 0.56 от длины ветки, из которой она растет. Высота дерева составляет 10 веток (включая ствол). Считайте, что размеры графического экрана вашего компьютера 640 точек по горизонтали и 480 точек по вертикали. В левом верхнем углу экрана расположена точка с координатами (0,0). Считайте, что в вашем языке программирования есть оператор LINE(x1,y1,x2,y2), который изображает на экране отрезок, соединяющий точки с координатами (x1,y1) и (x2,y2).

Задача C. Закраска прямой

Отрезок числовой оси от 0 до 1.000.000.000 выкрасили в белый цвет. Затем отдельные участки (между точками с целыми координатами) перекрашивали в белый и черный цвета. Всего было выполнено N (1 ≤ N ≤ 100) перекрашиваний. Напишите программу, которая по заданной последовательности перекрашиваний находит границы самого длинного белого участка.

Например, для N=4 и последовательности: 1-999999997 в черный, 40-300 в белый, 300-634 в белый, 43-47 в черный, ответом будет участок (47-634).

Задача D. Шарики

Имеется клетчатое поле размером M×N клеток (0 < M, N ≤ 20). В разных клетках поля находятся два маленьких шарика, которые могут перемещаются по полю по диагонали. За один шаг каждый шарик перемещается на одну из 4-х соседних диагональных клеток. При соударении с границей поля шарик меняет свое направление, отражаясь как луч света. При попадании в угол шарик меняет направление своего движения на противоположное.

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

Задача E. N в степени N

По заданному целому A (0 < A < 1.000.000.000) найти минимальное N, при котором NN будет делиться на A без остатка. Напишите программу, которая будет работать эффективнее, чем простой перебор всех значений N. Например, для A=40 ответом будет N=10.

Задача F. Сообщение

В сообщении, состоящем из одних русских букв и пробелов, каждую букву заменили ее порядковым номером в русском алфавите ('А' - 1, 'Б' - 2, ..., 'Я' - 33), а символ пробела заменили нулем. Напишите программу, которая вводит получившуюся последовательность цифр (не более 30) и находит количество исходных сообщений, из которых могла получиться заданная последовательность. Например, для последовательности "1025" количество возможных исходных сообщений - 4

Задача G. "Ну, погоди!" на катке

Заяц стоит в центре большого катка и поет свою любимую песню в игрушечный микрофон. От микрофона тянется достаточно длинный шнур, конец которого находится в руках у Волка. Пытаясь воспользоваться сложившейся ситуацией, Волк хочет незаметно замотать зайца этим шнуром. Для этого он катается вокруг зайца на коньках и постепенно его заматывает. Напишите программу, которая вводит путь Волка - ломаную, заданную последовательным перечислением координат вершин и определяет на сколько полных оборотов Волк замотает зайца. Учтите, что во Волк во время движения может не только заматывать зайца, но и разматывать. Координаты представляются вещественными числами. Заяц стоит в точке с координатами (0,0).

Задача H. Раскраска шестеренок

Две одинаковые шестеренки с N (N ≤ 12) зубьями красятся в два цвета, белый и черный, каждый зубец в свой цвет. Напишите программу, которая для заданному N выводит все способы раскраски шестеренок, которые нельзя совместить вращением. Раскраски, которые получаются друг из друга вращением и обменом шестеренок считаются одинаковыми. На рисунке показаны три раскрашенных шестеренки с 11 зубьями. Раскраска 2 совмещается с раскраской 1, а раскраска 3 - нет. Например, для N=2 все способы раскраски следующие (Б - белый цвет, Ч - черный): ББ, БЧ, ББ, ЧЧ, БЧ, ЧЧ.