Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по программированию..pdf
Скачиваний:
10
Добавлен:
15.11.2022
Размер:
12.2 Mб
Скачать

Задачи, предлагавшиеся на школьных олимпиадах по программированию (Пермская область)

1.Ортогональные латинские квадраты

Матрицу размером N x N назовем латинским квадратом порядка N, если каждое из чисел 1 ,2 ,...,JV входит ровно один раз в каждую строку и каждый столбец этой матрицы. Латинские квадраты А к В назовем ортогональными, если при их наложении в новой матрице получается множество всех упоря­ доченных пар элементов. Например, матрица С определяет ортогональность латинских квадратов А и В:

/1

2

3\

/ 1 2

 

3\

/(1,1)

(2,2)

(3,3) \

А = 2

3

I I

В = 3

1

2 I

С = (2,3)

(3,1)

(1,2)

\3

1

2 /

\2

3

1 /

\ (3,2)

(1,3)

(2 ,1)/

Написать программ}', которая по введенному N (1 < N < 10) находит одну пару ортогональных латинских квадратов А, В и формирует матрицу С. Если для заданного N решения не существует, то выводится соответству­ ющее сообщение.

Технические требования:

Матрицы А, В и С должны быть выведены на экран в максимально удобной для восприятия форме.

2.Уравнение в обратной польской записи

Задано уравнение вида F(X) = 0, где выражение F(X) состоит из целых

чисел, арифметических операций

и переменной X, которая может

входить в выражение не более одного раза.

записи, где знак опера­

Выражение

задается

в обратной

польской

ции ставится

не между

операндами,

а после

них. Например, для ^выра­

жения 2 -f 4 /(Х —1) + 7 обратная польская запись имеет следующий вид:

2 4 Х 1 - / + 7 +

Написать программу, которая решает заданное уравнение F(X) — 0 и

печатает все его корни.

Технические требования:

1. Программа должна обеспечивать следующий режим работы:

а) печатает приглашение “>” и ожидает ввода строки; если введена пустая

строка, программа печатает сообщение “До свидания!

и заканчивает р

оту,

б) проверяет корректность ввода;

 

 

^

в) рассматривая введенную строку как обратную польскую запись

F (X ), определяет и печатает все корни уравнения

( )

>

 

отсутствуют, то печатает сообщение “корней нет ,

 

 

 

г) переходит к выполнению пункта а.

 

 

 

2.Длина входной строки не превышает 80 символов.

3.Элементы обратной польской записи разделяются пробелами.

Пример работы правильной программы:

> 6 4 / 1 1 2 / + -

хориями являются все вещественные ^исла

>1 121 X + /

горней нет

> 0 X 4 6 / + /

корнями являются все вещественные числа, кроне -2/3

>-2 X + 4 - 7 / -

уравнение имеет единственный корень 2/7

>

До свидания!

3. “ Вращающееся число"

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

1)число оканчивается на 5;

2)при умножении его на 5 образуется новое число, которое может быть получено из исходного вычеркиванием цифры 5 на конце и переписыванием

еев начало числа.

4.Лабиринт

Путник попал в лабиринт, состоящий из одинаковых комнат, каждая из которых может иметь от одной до четырех дверей в соседние комнаты. Он долго блуждал по нему и, наконец, нашел выход. Путник составил описание своего маршрута, обозначая в каждой комнате направления движения соот­ ветственно буквами N (север), Е (восток), S (юг), W (запад).

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

Технические требования: Маршрут путника записывается в виде последо­ вательности менее 80 символов N, Е, S, W.

5. Подряд идущие одинаковые цифры

Даны два целых числа а и b (—15000 < a < 15000, —15000 < b < 15000). Определить, есть ли в сумме этих чисел две идущие подряд одинаковые цифры.

Например, для a = 100, Ъ= 10 ответ “есть” ; для а = 111, Ь = 10 ответ “нет” .

в. k-я цифра последовательности

Определить к-ю цифру < 10000) в последовательности ^ 1 0 ,1 0 ^ 1 0 0 0

в которой выписаны подряд степени числа десять (цифры нумеруется слева направо, нумерация начинается с единицы).

Например, для к = 4 в ответе получаем 1, при к = 64 в ответе получаем 0.

Т. Распознавание слов в тексте

Дан текст, состоящий ио слов, разделенных пробелами. Повторяющихся слов нет. Длина текста не превышает 80 символов. Все буквы в словах — за­ главные. Найти такую наименьшую длину подстроки, что любое слово текста можно однозначно распознать по его началу найденной длины.

Например, для текста “СЕДОЙ СТАРИК СЕРДИЛСЯ” ответ — 3.

8. Калькулятор

Написать программу — имитатор калькулятора, которая по вводимой строке, содержащей математическую запись арифметического выражения, выдает численное значение этого выражения. Вводимая строка содержит только целые числа и знаки следующих арифметических операций: *'-f” ,

Длина строки не превышает 80 символов. Числа в выражении, результат и промежуточные величины принимают значения из отрезка [—10000; 10000].

Например, для входной строки “23 —45 * 12 +111 * 2 —123” получаем ответ -418.

9. Чертежник

Имеется исполнитель, состояние которого в любой момент времени зада­ ется координатами на координатной плоскости и направлением. В начальный момент исполнитель находится в точке с координатами (0; 0) и ориентирован вверх. Его система команд:

L - поворот на 90° налево;

R - поворот на 90° направо;

F - перемещение вперед на 1.

Задана строка, содержащая некоторую последовательность команд испол­ нителя. При перемещении по плоскости исполнитель вычерчивает траекто­

рию — ломаную линию. Найти:

а) координаты множества всех точек с целочисленными координатами, в

которых исполнитель побывает больше одного раза; б) для каждой из точек с целочисленными координатами, где побывал ис­

полнитель, определить, сколько раз он здесь побывал; в) определить, по каким отрезкам траектории исполнитель прошел более

одного раза; г) определить для каждого элементарного отрезка траектории, сколько раз

прошел по нему исполнитель.

Например, для входной строки “FFRFFRFRFFFLFLFLFF ответы, а) {(0,0), (0; 1) (0; 2)}.

б) {(0, 0) - 2; (0, 1) - 3; (0, 2) - 2; (1, 2) - 1; (2, 2) - 1; (2, 1) - 1; (1, 1) - 1;

( - 1, 1) - 1; ( - 1, 0) - 1}.

в) (0, 0) - (0, 1); (0, 1) - (0, 2).

г) (0, 0) - (0, 1) - 2; (0, 1) - (0, 2) - 2; (0, 2) - (1, 2) - 1; (1, 2) - (2, 2) - 1; (2,

2) - (2, 1) - 1; (2, 1) - (1, 1) - 1; (1, 1) - (0, 1) - 1; (0, 1) - ( - 1, 1) - 1; ( - 1, 1) -

( - 1, 0) - 1; ( - 1, 0) - (0, 0) - 1.

10. “Делимость”

Найти все n-значные натуральные числа вида *00... 00 * * (где * заменяет одну из цифр 0 ,1 ,..., 9), которые нацело делятся одновременно на 15,18,20.

11.Форматирование текста

ВЭВМ вводится текстовая строка, длина которой не превышает 250 сим­ волов. Отдельные слова в тексте разделены пробелами, причем их количество может быть произвольно. Написать программу, которая выводит такой текст на экран, разбивая его на строки из N символов, причем пробелы между сло­

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

Для облегчения процесса тестирования в программе предусмотреть воз­ можность один и тот же текст обработать несколько раз для различных зна­ чений N.

Примечания

1.Разделение отдельных символов слова недопустимо. Знаки препинания (точка, запятая и др.) считать относящимися к предыдущему слову.

2.В каждую строку необходимо включать максимально возможное коли­ чество слов.

3.Количество пробелов между словами в пределах одной строки не должно отличаться более чем на один.

12. “ Тетрамино”

На клетчатой бумаге размером М х N клеток (М > 3 и N > 3) находится некоторое количество тетрамино (фигур, состоящих из 4-х клеток, примыкаю­ щих друг к другу сторонами), не имеющих общих точек. Написать программу, позволяющую определять: можно ли при заданном расположении тетрамино поместить на этом листе еще хотя бы одну фигуру так, чтобы она также не имела с остальными фигурами точек соприкосновения. Должен выводиться один вариант расположения, т.е. координаты клеток, которые займет новая фигура. Предусмотреть анализ корректности вводимой информации.

13. “ Ладьи”

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

били друг друга. Примечание: 1 < N < 11.

14. Игра

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

15. Квадрат

Имеется квадрат, состоящий из 16 одинаковых маленьких квадратиков. Каждый маленький квадратик имеет двойную расцветку, разделенную диа­ гональю. Верхняя часть квадратика красная, нижняя — синяя. Квадратики

можно поворачивать на 90, 180, 270, 360 градусов в плоскости большого ква­ драта.

Написать программу, которая, имея произвольное исходное положение ма­ леньких квадратиков внутри большого, укажет, как за минимальное коли­ чество переворотов преобразовать большой квадрат в заданное положение.

16. Возведение в степень Некоторый язык программирования отличается от стандартного лишь

тем, что

1)можно умножать лишь однозначные числа;

2)функции возведения в степень и вычисления логарифма отсутствуют.

Напишите программу для вычисления точного значения функции Z = X Y , где X , Y — произвольные сколь угодно большие натуральные чи­ сла.

17.“ Лучший маршрут”

Втаблице N х N, где N < 15, клетки заполнены случайным образом

цифрами от 0 до 9. Найти маршрут из клетки Л(1,1) в клетку А(АГ, N) такой, что

1)маршрут состоит из отрезков, соединяющих центры клеток, имеющих об­ щую сторону;

2)длина маршрута минимальна;

3)сумма цифр, встречающихся на маршруте, максимальна.

18. Максимальная нулевая подматрица

Дана прямоугольная двоичная (состоящая из 0 и 1) матрица. Найти в ней

максимальную нулевую подматрицу.

19. Натуральные числа в вершинах многоугольника

Написать программу расстановки в вершинах и на сторонах правильного n-уголъника с нечетным количеством сторон натуральных чисел от 1 до 2п

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

20. Нахождение элемента с заданным свойством

Задана последовательность чисел. Начальные элементы последовательно­ сти имеют вид: 1; 11; 21; 1112; 3112; 211213; 312213; Написать программу для нахождения первого элемента последовательности, содержащего цифру 5.

21. Цепная дробь

 

Представить обыкновенную дробь — (т < п) в виде цепной дроби

п

т

1

 

а2 + ... — j-

 

_1-------

 

Oik

Например,

 

 

1

 

”Т

22. Спортлото

Составить программу, разыгрывающую тираж спортлото 6 из 36.

23. Календарь

Дан некоторый год и порядковый номер дня в году. Получить сообщение с указанием соответствующей календарной даты.

Например, дано: год — 1992, день — 40-й. Вывести на экран: 9 февраля 1992 года.

24. Игра Баше

Дано N предметов. Играют двое. Берут предметы по очереди. За один ход можно взять не более М предметов (N —M > 2). Проигрывает тот, кто берет последний предмет. Составить программу, которая моделирует игру Баше между человеком и ЭВМ, причем ЭВМ играет второй и всегда выигрывает.

Если такая тактика невозможна для данных М и N, то вывести соответ­ ствующее сообщение.

25. Шарик в ящике

На экране изображен квадрат. В центре — шарик. После нажатия клавиши шарик начинает двигаться в случайном направлении. Отражение от стенок

— зеркальное, абсолютно упругое. Получить на экране картину движения шарика.

26. Телефонная станция

Поселок состоит го одной улицы. На улице п + 1 дом. Расстояние между домами 5Ь S2, ..., 5П.

Поселок планируют телефонизировать, причем телефонную станцию уста­ новить в одном из домов. Стоимость установки зависит от того, в каком доме она будет расположена. Для г-го дома стоимость V*. Требуется подобрать но­ мер дома для телефонной станции так, чтобы стоимость прокладки кабеля до самого удаленного дома, включая стоимость установки, была наименьшей.

27. Маятник

Составить программу, имитирующую колебания маятника.

28. Дорога

Составить программу, имитирующую дорогу, по которой движется транс­ порт, и семафор вызывного действия. При нажатии какой-либо клавиши за­ горается фонарь семафора. Пока он горит, пешеход должен успеть перейти дорогу.

29. “ Угадай число!”

Составить программу, по которой ЭВМ предложит Вам загадать целое число в диапазоне от 1 до 100, а потом постарается угадать его за наимень­ шее количество попыток. При каждой попытке ЭВМ называет предполага­ емое число, а Вы указываете, что оно “больше” , “меньше” или “равно” по отношению к задуманному. После угадывания машина сообщает количество использованных попыток.

Затем машина предлагает Вам отгадать случайное число, которое заду­ мает она в том же диапазоне. Теперь Вы угадываете, а машина отвечает “больше” , “меньше” , “равно” и подсчитывает попытки. После отгадывания определяется победитель — тот, кто использовал меньшее число попыток.

30. Соревнования

Исход игры между любыми двумя из 2Пспортсменов предопределен зара- • нее. Определить всех претендентов на первое место в турнире по олимпийской системе.

31. Древнерусский способ умножения

Известен древнерусский прием умножения. Для умножения а и Ъпоступаем так: делим а на 2, а Ьумножаем на 2, причем если делимое число число не­ четное, то берем целую часть частного. С полученными числами проделываем то же самое, пока в частном не получится единица. Для получения произведе­ ния аЬ складываем только те числа правого столбика, слева от которого стоят нечетные числа.

Пример: а = 42, Ь= 63.

42

63

21

126

10

252

5

504

2

1008

1

2016

Ответ: ab = 126 + 504 + 2016 = 2643.

Выполнить умножение данных чисел а и Ьс помощью указанного способа.

32. Упорядочивание массива Дана таблица А[ 1 100], заполненная целыми числами. Составить алго­

ритм сортировки, исполнение которого приведет к тому, что числа в таблице А будут упорядочены так: сначала числа., делящиеся на 3 без остатка, затем числа, дающие в остатке 1, и, наконец, числа, дающие в остатке 2. Взаимный порядок следования чисел в каждой из указанных групп должен сохранится.

33. Игра “ Считалка”

N человек встают в круг и получают номера 1, 2, 3, ..., N по порядку против часовой стрелки. Затем, начиная с некоторого участника, отсчитыва­ ется М человек (тоже против часовой стрелки); (М + 1)-й первым выходит из круга. После этого, начиная со следующего, снова отсчитывается М + 1 человек — и так до тех пор, пока не останется один человек. Указать номера участников в порядке их выхода из круга, если последним в круге остался участник с номером Р.

34. Частотный анализ текста

Произвольный русский текст содержит не более 200 символов. Написать, какие буквы и сколько раз каждая встречаются в этом тексте. Ответ должен приводиться в грамматически правильной форме, например, а — 25 раз, к — 3 раза и т. д,

35. Умножение чисел в троичной системе счисления

Составить программу, реализующую умножение двух неотрицательных целых чисел а (0(ю) < а(10) < 181(ю)) и Ъ(0(ю) < fyio) < 181(ю)) в троичной системе счисления.

Вводимые числа представляют собой последовательность символов 0, 1, 2. Результаты работы программы должны быть выведены в троичной и деся­ тичной системах счисления. В программе должна быть предусмотрена про­ верка правильности ввода троичного числа.

36. “ Хитрый купец”

Два купца отправились торговать за море. Каждый из них повез по N одинаковых тюков с товаром. В пути корабль попал в шторм и дал течь. Чтобы корабль не затонул, капитан приказал поднять весь груз на палубу

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

Груз выбрасывается по следующему правилу:

1)каждый тюк получает порядковый номер, начиная с тюка, стоящего на носу корабля; их нумерация осуществляется по часовой стрелке;

2)номер первого выброшенного тюка соответствует текущему числу ме­ сяца М\

3)через К тюков следующий тюк с товаром выбрасывается.

Один из купцов прознал про это правило. Как необходимо расставить ему груз, чтобы ни один из его тюков не был выброшен?

37. Числовая последовательность

 

Последовательность 1, 2, 3, 4, 5, б, 8, 9, 10, 12, 15,

получается по

следующему правилу:

 

1)число 1 принадлежит последовательности;

2)в последовательность входят натуральные числа, не делящиеся ни на какие простые числа, кроме 2, 3 и 5.

Не используя операции вычитания, деления, целочисленного деления (div) и остатка от деления (mod), вывести на экран первые К (К < 100) значений последовательности в порядке возрастания. Число К вводится с клавиатуры.

38. Распознавание по шаблону

Дана матрица размером 5x5, состоящая из нулей и единиц. Даны матрицы размером 5 x 3 — шаблоны нуля и единицы соответственно:

1 1 1

0 0 1

1 0 1

0 1 1

1 0 1

1 0 1

1 0 1

0 0 1

1 1 1

0 0 1

Если данная матрица 5 x 5 включает в себя шаблон нуля или единицы, а остальные элементы — нули, то выдать на экран соответствующий символ (0 или 1). В противном случае выдать на экран символ “N”

Примечание: шаблон в матрице может быть повернут на угол, кратный 90°, и смещен по горизонтали или вертикали.

39. Лишние скобки

Составить программу, которая из вводимой строки, содержащей кор­ ректную запись арифметического выражения с общепринятыми математи­ ческими приоритетами, удаляет лишние скобки. Скобки считаются лишними, если их отсутствие не влияет на значение выражения. Выражение содержит только переменные, состоящие из латинских букв, знаки четырех операций (+, * и /) и круглые скобки. Его длина не превышает 60 символов. Имя переменной может встречаться в выражении только один раз. Выражение не может содержать операции смены знака (—а, +Д и т. п.).

Примеры:

 

1)

((alfa + beta) + gamma)

alfa -|- beta + gamma

2)

a * (b —c)

=► a * (b c)

3)

P * (q/r) * sj{a * b)

p*q/r * $/(a * b)

40. “ Гео” На квадратной клетчатой доске четного порядка к между двумя сопер-

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

Необходимо написать программу, реализующую выигрышную стратегию для второго игрока. Предполагается, что программа запрашивает очередной ход соперника и выдает свой ход в виде двух натуральных чисел — номеров столбца и строки, в которых находится занимаемая клетка (нумерация начи­ нается с левого нижнего угла). Программа должна проверять корректность вводимого хода, а также заканчивать игру с выдачей соответствующего со­ общения после своего хода, завершающего партию. Программа должна пра­ вильно работать для доски любого четного порядка к < 8.

41. Значение дроби

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

о

тала бы соответствующую ей десятичную дробь. Если дробь является пери­ одической, то напечатать период этой дроби (а, Ь— натуральные, а < 32767, Ь< 100).

42. “ Плетенка”

На рисунке изображена плетенка, состоящая из N = 4 вертикальных и К = 3 горизонтальных полосок.

Задание:

По заданным N (N < 15) и К (К < 10) нарисовать на графическом экране узор, аналогичный изображенному на рисунке.

Технические требования:

Числа N и К вводятся с клавиатуры. Узор должен занимать весь экран для любых N и К.

43.М атрица со спиралью из простых чисел

Задмо нечетное 1 < N < 21. Написать программу вывода на экран матрицы N х N, заполненной простыми числами в указанном порядке.

Порядок заполнения показан для N = 5.

0

0

3

0 0

0

2

23

5 0

1

19

37

29

7

0

17

31

11 0

0

0

13

0 0

Здесь первый элемент средней строки 1, а остальные — простые числа, на­ чиная с 2, расположенные по спирали внутри вписанного в квадрат ромба.

44.к-я цифра в записи числа

Дано число 0,1234567891011121314... (его десятичная запись образуется последовательно записанными натуральными числами). Написать программу, вычисляющую к-ю (начиная с 1) цифру hk в записи этого числа (например, hw = 1), где 1 < к < 120.

45. Поиск прямоугольников

На прямоугольном клетчатом листе бумаги размером М х N клеток неко­ торые клетки закрашены и образуют несколько не имеющих общих вершин многоугольников (в т.ч. и невыпуклых). Многоугольные области не могут быть многосвязными (т.е. иметь внутри ’‘пустоты” ). Подсчитать количество многоугольников, которые являются прямоугольниками.

Техническое требование:

если клетка закрашена, вводить 1, если свободна — 0.

46. И митатор СУБД Написать программу, которая должна позволять вводить данные и полу­

чать ответы на запросы в форме

 

НАЗВАНИЕ;ГЕРОЙ;АНТИГЕРОЙ;ГОД;РЕЗУЛЬТАТ

 

т.е. в форме пяти полей, отделенных друг от друга символом

(точкой с

запятой).

любые

При вводе данных поля НАЗВАНИЕ, ГЕРОЙ, АНТИГЕРОИ

последовательности букв и цифр, поле ГОД — целое число, поле РЕЗУЛЬТАТ

-----Ь (плюс) или - (минус).

При вводе запроса поля принимают значения:

1)условия полного совпадения в виде

=СЛОВО

Здесь СЛОВО — некое допустимое значение поля базы данных. Программа должна выводить информацию о записях базы, соответствующие поля кото­ рых имеют значение СЛОВО;

2)? (вопросительный знак), если желаем в ответе выводить значение со­ ответствующего поля;

3)! (восклицательный знак), если не желаем.

Выход из программы — по вводу пустой строки. Примечания:

1)длина строки ввода меньше 80 символов;

2)длина любого поля меньше 20 символов;

3)абсолютное значение поля ГОД меньше 2000.

Пример работы программы (> — приглашение системы к работе):

>КУЛИКОВСКАЯ;ДМИТРИЙ;МАМАЙ;1380;+ -

(* ввод данных *)

>БОРОДИНСКАЯ;НАПОЛЕОН;КУТУЗОВ;1812;-

(* ввод данных *)

>?;!;!;!;?

(* ввод запроса *)

КУЛИКОВСКАЯ;;;;

(* ответ системы *)

БОРОДИНСКАЯ;;;;-

(* ответ системы *)

>?;!;!;?;=-

(* ввод запроса *)

БОРОДИНСКАЯ;;;1812;-

(* ответ системы *)

>♦“»

(* конец работы *)

47. Последовательность, (заданная рекуррентной формулой

Дана последовательность, заданная рекуррентной формулой ап+1 — 7ап mod 2023, al = 1,

где х mod у означает остаток от деления х на у. Написать программу, вы­ числяющую ап при 1 < п < 1 000 000 000 000 000 000 000.

48.Оптимальный маршрут

Имеется полоска с пронумерованными от 1 до 60 клетками. В одной из них находится исполнитель, который умеет выполнять следующие команды:

1)шаг вперед (перейти на соседнюю клетку с большим номером);

2)шаг назад (перейти на соседнюю клетку с меньшим номером);

3)прыжок вперед (переместиться в клетку, номер которой больше но­ мера текущей клетки на 8);

4)прыжок назад (переместиться в клетку, номер которой меньше но­ мера текущей клетки на 8);

5)в начало (встать на клетку номер 1);

6)в конец (встать на клетку номер 60).

Если выполнение команды приведет к выходу за пределы полоски, испол­ нитель ее игнорирует.

Написать программу, которая по введенным L (номер клетки с начальным положением исполнителя) и М (номер клетки, куда нужно попасть) находит алгоритм движения из наименьшего числа команд. Результат вывести в виде:

команда номер поля после команды

Техническое требование:

Примечание. Для некоторых L и М существует несколько оптимальных решений.

Пример работы программы:

Вводите L: 44 Введите М: 11 Оптимальный маршрут:

в начало

1

прыжок вперед9

шаг вперед

10

шаг вперед

11

49. Система счисления “8-6-4-2”

В системе счисления “8-6-4-2” для записи чисел в младшем разряде исполь­ зуются цифры: 0, 1; в следующем разряде — 0, 1, 2, 3; в третьем — 0, 1, 2, 3, 4, 5; в четвертом разряде — 0, 1, 2, 3, 4, 5, 6, 7. Будем рассматривать только четырехзначные числа в системе счисления ”8-6-4-2” .

Написать программу, которая позволит вводить числа в следующих фор­ матах:

число

в

десятичной системе счисления - Бчисло

число

в

системе счисления ”8-6-4-2и

Iчисло

Программа должна выполнять следующие операции: перевод из одной си­ стемы счисления в другую, сложение, вычитание, умножение (+, —, *):

Эчисло =>реэультат 1число =>реоультат

Рчисло операция Очисло =>результат Очисло операция 1число =>рвзультат 1число операция Эчисло =>реэультат 1чисяо операция 1число =>реэультат

Результат в записи команды может обозначаться буквами D или I. Если он обозначен D, то программа должна выдать ответ в десятичной системе счи­ сления. Если результат обозначен I. то программа должна выдать результат в системе счисления “8-6-4-2” . Первая команда обозначает перевод в систему

счисления “8-6-4-2” , а вторая — в десятичную систему счисления. Примеры работы программы:

16420 =>D324 Dill =>12131

12121 + 11111 =>13300

12121 - D10 =>D99

50. Точные значения членов последовательности

Дана последовательность

ап = 2’

+

( - 1)"

(V5-1)»

 

(л /3 + l ) "

Написать программу, находящую точное значение ап для 0 < тг< 150. Пример. При гг = 58 получаем ап = 10359022039470231387111424.

51. Перевод выражений с одного языка программирования на другой

В двух языках программирования высокого уровня выражения над веще­ ственными переменными и константами могут быть образованы с помощью операций соответственно:

1. F( X)

I

1.

 

и

 

F( X)

2.

*,

/,

AND

2.

* *

 

3.

+,

—,

OR

3.

*,

/

4.

 

 

 

4.

+.

 

 

 

 

5.

.EQ.,.LT.,.GT.,.LE.,.GE.,.NE.

 

 

 

 

6.

.AND.

 

 

 

 

7.

.OR.

и круглых скобок.

F( X) подразумевает вычисление функции, ** — возведение в степень. Опе­ рации в каждом языке пронумерованы в порядке убывания приоритета. Опе­ рации .EQ., .LT., .GT., .LE., .GE., .NE. эквивалентны соответственно =, <, >, < =, > = , <> . В языке I существуют функции ЕХ Р ( Х ) = ег и LN( X) = lnx, через которые выражается операция возведения в степень (если А > 0 и В

— вещественные выражения, А * = ЕХР( В * LN( A) ) ). При отсутствии скобок операции выполняются слева направо в порядке убывания приоритета.

A . Написать программу, переводящую корректное выражение на языке II

вэквивалентное выражение на языке I.

B. Удалить лишние скобки в результате.

52. Часы

Текущее показание часов т ч (0 < т < 23), п мин (0 < п < 59), к сек (0 < к < 59). Какое время будут показывать часы через р ч (0 < р < 100) q мин (0 < q < 59) г сек (0 < г < 59)?

53. Ближайший день

Дано число п, день недели d (1 < d < 7), месяц т (1 < т < 12) висо­ косного года. Какое будет число щ у дня недели d\, ближайшего к данному (независимо, был он уже, или еще наступит; d ф di)7 Написать программу, решающую эту задачу.

54. Словарь

Исходные данные:

1)текст на русском языке, записанный заглавными буквами (строка не более, чем из 120 символов);

2)некоторый набор русских слов (не более 20), составляющий словарь. Разработать программу, позволяющую:

1)при создании словаря упорядочить в нем вводимые слова в алфавитном порядке;

2)проверять орфографию в тексте с использованием созданного ранее словаря;

3)добавлять по требованию пользователя слова из текста в словарь в случае их отсутствия в нем, не нарушая его упорядоченности.

Примечание. Два слова считаются различными, если они отличаются хотя бы на один символ.

Пример правильно работающей программы:

 

 

 

 

Вводите проверяемый текст:

 

 

 

 

 

 

 

 

МАМ МЫЛА РАМУ, МАШ МЫЛА КОШКУ. МИША ИГРАЛ.

 

 

 

 

Схопьхо слов будет в словаре? 3

 

 

 

 

 

 

 

 

Введите 1-е слово: МАМ

 

 

 

 

 

 

 

 

 

Введите 2-е слово: РАМУ

 

 

 

 

 

 

 

 

 

Введите 3-е слово: МИША

 

 

 

 

 

 

 

 

Словарь после ввода всех слов:

 

 

 

 

 

 

 

 

МАМ

 

 

 

 

 

 

 

 

 

МИША

 

 

 

 

 

 

 

 

 

РАМУ

 

 

 

 

 

 

 

 

 

Слово "МЫЛА” не найдено в словаре.

-

 

пропустить;

1

-

вставить)?

1

Вставить слово "МЫЛА"

в словарь

(0

 

Слово "МАША" не найдено в словаре.

-

 

пропустить;

1

-

вставить)?

О

Вставить слово "МАША"

в словарь

(0

 

Слово "КОШКУ" не найдено в словаре.

 

-

пропустить;

 

1 -

вставить)? О

Вставить слово "КОШКУ"

в словарь

(0

 

 

Слово "ИГРАЛ" не найдено в словаре.

 

-

пропустить;

 

1 -

вставить)?

1

Вставить слово "ИГРАЛ"

в словарь

(0

 

Словарь после проверки текста содержит слова:

 

 

 

 

ИГРАЛ

 

 

 

 

 

 

 

 

 

МАМ

 

 

 

 

 

 

 

 

 

МИША

 

 

 

 

 

 

 

 

 

МЫЛА

 

 

 

 

 

 

 

 

 

РАМУ

 

 

 

 

 

 

 

 

 

Исполнитель умеет перемещаться по клетчатому полю 10 х

ин онает

команды: ВЛЕВО, ВПРАВО, ВВЕРХ и ВНИЗ, смещаясь по каждой из них

на одну клетку поля в указанном направлении (в случае выхода за границы поля выполнение алгоритма прекращается с выдачей диагностического сооб­ щения). Кроме того, исполнитель понимает команду цикла, имеющую вид

ПОВТОРИТЬ N

КЦ

где после слова “повторить” стоит ровно один пробел и N — целое число в интервале от 1 до 9. Внутри цикла может быть любое количество произ­ вольных команд, в том числе и новый цикл.

Написать программу, которая транслирует введенный текст алгоритма для исполнителя и выполняет его, выдавая в качестве ответа координаты ко­ нечного поля. Считать, что исходное положение исполнителя — левая нижняя клетка с координатами (1,1).

Предусмотреть синтаксический контроль вводимых команд. Разрешается предполагать, что все циклы в алгоритме вложены правильно.

Технические замечания:

1.Длина алгоритма не превышает 20 команд, максимальная степень вло­ женности циклов — 4.

2.Признаком окончания набора алгоритма является ввод пустой строки.

56.Сумма геометрической прогрессии

Написать программу, подсчитывающую, сколько раз каждая цифра появ­ ляется в точном значении суммы первых N членов геометрической прогрес­ сии Ак = Q А к AQ = М по заданным натуральному JV, целым Q и М. Должна быть предусмотрена корректность ввода.

Примечания: N < 40, \Q\ < 40 и \М\ < 40. Приглашение для ввода — имя переменной и ?>. Предполагается, что в записи ненулевого результата первая цифра отлична от нуля.

Пример работы правильной программы:

М?>39

Q?>39

N?>39

0 встречается 5 рао

1 встречается 10 раз

2 встречается 8 раз

3 встречается 2 раз

4 встречается 5 раз

5 встречается 4 раз

6 встречается 4 раз

7 встречается 11 раз

8 встречается 8 раз

9 встречается 6 раз

57. Конь

Находясь в одиночестве на шахматной доске N х N, где N < 10, конь с поля ah достигает поля /9т кратчайшим возможным путем (а, /3= А, В ,...; к, т = 1,2,. ..). Написать программу, определяющую, сколько ходов L ему нужно сде­ лать. В программе должно быть предусмотрен контроль корректности ввода и Достижимости цели коня. Конь движется по правилам стандартных шахмат.

58. Простые числа

Загадано простое число х, где 1 < х < N (N < 1000). Его можно отгадать, получив ответы на некоторое число к вопросов вида “х меньше чем ...?” .

Написать программу, находящую минимальное, заведомо достаточное, к для данного N.

59.“ ГЪооди” .

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

1)к каждому гвоздю была привязана хотя бы одна веревочка;

2)суммарная длина веревочек была бы минимально возможной. Задание:

Написать программу, которая связывает пары гвоздей веревочками как описано выше.

Технические требования:

Входными данными являются число гвоздей и их координаты, выходными

— минимальная суммарная длина и пары номеров соединяемых гвоздей.

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

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

5

3

 

 

11 12 13 16 17

1 2

2 3

4 5

60. “ Борьба задач” Компьютер производительностью 1 миллион операций в секунду работает

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

Перед каждой командой компьютер выбирает задачу с НАИМЕНЬШИМ приоритетом, после чего выполняет из нее одну команду и описанный процесс повторяется вновь с учетом изменившегося приоритета.

Смоделировать работу компьютера с учетом следующих условий.

1)все команды компьютера выполняются за одинаковое время;

2)в случае, когда две задачи имеют одинаковый приоритет, то предпо­ чтение отдается той, которая стартовала позднее (считать, что задачи не

стартуют одновременно); 3) возможны ситуации, когда в машине нет ни одной задачи, причем эти

временные интервалы могут быть значительными,

4)моделируемый промежуток времени не превышает 120 минут; считать, что за это время все введенные задачи закончатся;

5)для удобства ввода исходных данных считать, что время старта любой задачи от начала моделируемого промежутка равно целому числу миллисе­ кунд (1 мс = 0.001 с).

Входные данные являются списком задач: указывается количество задач в списке (не более 8), затем время ввода каждой задачи в МИЛЛИСЕКУНДАХ от начала моделируемого промежутка и j чна программы в командах.

Выходные данные: номер задачи и вре т ее окончания в МИКРОСЕКУН­ ДАХ от начала моделируемого промежутка (1 мкс = 0.000001 с).

61, Полимино

Полимино — это связная фигура из N клеток. Под связной фигурой здесь понимается фигура, все клетки которой можно обойти ходом шахматной ладьи. Для заданного N в общем случае можно составить несколько раэлич-, ных полимино. Фигуры, совпадающие при переносах и (или) поворотах, раз­ личными не считаются.

Задание;

Написать программу, которая находит все различные полимино из N кле­ ток для двух случаев:

1)1 < N <5;

2)б < N < 8.

Технические требования:

Число N вводится с клавиатуры. Программа должна вывести в первом слу­ чае список всех найденных полимино и их общее количество (соседние фигуры должны быть разделены ровно одной пустой строкой), а во втором случае не­ обходимо вывести лишь общее количество различных полимино, содержащих

N клеток.

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

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

3

**

*

2

62. “ Путешествующая парабола”

Написать программу, рисующую координатные оси с началом координат в центре экрана и строящую параболу у = х2. В правом нижнем углу экрана выводится формула, описывающая график функции в виде: у = а •(х + Ь)2+ с.

Далее программа ожидает нажатия следующих клавиш и выполняет соот­ ветствующую работу. Клавиши R (вправо), L (влево), D (вниз), U (вверх) вызывают смещение вершины параболы на единицу в указанном направлении и изменение формулы. По оси Ох перемещение от -30 до +30. По оси Оу

перемещение от -20 до +20.

Клавиша ” + ” вызывает изменение коэффициента а на +0.1. Клавиша ” вызывает изменение коэффициента а на —0.1. Коэффициент а изменяется от —1 до +1.

При перемещении параболы или изменении коэффициента а формула также изменяется.

Нажатие клавиши ESC (код 27) завершает работу программы.

63. Отношения

Заданы выражения вида аШЬ (количество которых меньше или равно 30), связывающие величины а и 6, где а и 6 — любые строчные буквы латинского алфавита (возможно совпадающие), а @ — одно из шести отношении <, <=, =, О (не равно), >=, >. В различных выражениях одни и те же буквы могут повторяться. Если введенные выражения противоречивы, то нужно со­ общить об этом, иначе по двум заданным буквам написать наиболее точное выражение, связывающее их, или указать, что отношения, связывающие эти величины, неизвестны.

Технические требования: Каждое выражение вводится в отдельной строке. Пример 1

Выражения: а < Ь, у >= х, а < = Ь, b = х, х = Ь, z < = г. Первая заданная буква: у, вторая заданная буква: а. Отъет: у > а.

Пример 2 Выражения: а < Ь, Ь< с, а = с.

Ответ: Противоречивые данные.

64. “ Головоломка”

Квадрат размером 5 x5 вдоль линий сетки разбили на несколько фигурок. Написать программу, которая определяет, можно ли переложить часть фи­ гурок так, чтобы снова образовался квадрат размером 5 x 5 . При перекла­ дывании не разрешается поворачивать или переворачивать фигурки.

Технические требования:

Входные данные — символьная матрица размером 5 x 5 . Каждая буква в матрице означает идентификатор фигурки, содержащей соответствующую клетку. Идентификаторами являются заглавные буквы латинского алфавита от А до Y. Программа должна выдавать другой способ составления квадрата размером 5 x 5 , либо сообщение, что это невозможно.

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

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

ЕЕЕЕЕ

ЕЕЕЕЕ

ЕВЕЕЕ

ЕАЕЕЕ

АВССЕ

ВАААЕ

AAADE

ВАААЕ

АААЕЕ

DCCEE

65. “ Строчки” Заданы две символьные строки А и В. Требуется вычислить, сколькими

способами можно получить строку В из строки А, вычеркивая некоторые символы. Например, если строки А жВ имеют соответственно вид Самарина Ирина и Сара, то искомое чцсло равно 7, для строк аааbbbbccc и abc это число равно 36.

Задание:

Напишите программу, находящую требуемое число способов.

66. “ Ц вет глаз жителей Цветочного города” Незнайка записал в записную книжку цвета глаз всех жителей Цветочного

города. Написать программу, определяющую:

сколько разных цветов глаз у жителей города;

какой цвет глаз встречается наиболее часто.

67.Поиск К элементов массива, дающих максимальную сумму Дан двумерный массив N х N, содержащий целые числа. Написать про­

грамму для вывода индексов тех К элементов этого массива, сумма которых максимальна (N < 10).

68. “ Забегающие часы” Полного завода ручных механических часов хватает на 24 ч. При заводе

часов устанавливают точное время (с точностью до минуты). Эти часы за­ бегают вперед каждый час на X минут. Известно, что часы заводились в А часов В минут. Сейчас часы показывают С часов и D минут. Написать программу, которая вычисляет точное время.

Пример работы программы:

время завода часов: 14. 30 показания часов: 10. 20 на сколько минут забегают? 7

точное время: 7 часов 46 минут

69. “ Словесная запись арифметического выражения” Разработать программу, которая по заданной строке, содержащей

арифметическое выражение в виде суммы двух двузначных (или однознач­ ных) натуральных чисел, выводит на экран словесное выражение вида — Пер­ вое Слагаемое плюс Второе Слагаемое равно Сумма.

Пример. Исходная строка: 2 + 17.

Ответ: два плюс семнадцать равно девятнадцать.

Список использованной при составлении задачника литературы

Абрамов С.А., Гйездилова Г.Г., Капустина Е.Н., Селюн М.И. Задачи по программированию. М.: Наука, 1988.

Олимпиады по информатике. Задачи и решения: методические рекоменда­ ции для учителей и учащихся школ. Красноярск, 1991.

Основы информатики и вычислительной техники /Под ред. А.П. Ершова и В.М. Монахова. М.: Просвещение, 1988. Ч. 1,2.

Пильщиков В.Н. Сборник упражнений по языку Паскаль. М.: Наука, 1989. Касаткин В.Н. Информация. Алгоритмы. ЭВМ. М.: Просвещение, 1991. Ляхович В.Ф. Руководство к решению задач по основам информатики и

вычислительной техники. М.: Высшая школа, 1994.

Сычев Н.А. Задания для вступительных экзаменов по информатике в НГУ //Информатика и образование. 1995. N 2.

Гладков В.П. Задачи по информатике на вступительном экзамене в ВУЗ и их решения: Учебное пособие. Перм. техн. ун-т. Пермь, 1994.

Ван Т&ссел Д. Стиль, разработка, эффективность, отладка и испытание программ. М.: Мир, 1981.

Хонсбергер Р. Математические изюминки. М.: Наука, 1992.

Залогова Л.А., Русаков С.В., Семакин И.Г., Хеннер Е.К., Шестакова Л.В. Основы информатики и вычислительной техники в базовой школе. Пермь,

1995.

Заварыкин В.М, Житомирский В.Г., Лапчик М.П. Основы информатики и вычислительной техники. М.: Просвещение, 1989.

Попов Б.В. TURBO PASCAL для школьников. Версия 7.0. М.: Финансы и статистика, 1996.