Окружная олимпиада по программированию 1999 г.
Команды выполняют произвольное число заданий,результат определяется по сумме набранных баллов
Задача 1.{3} Создать модель планетарной системы из одной звезды и одной планеты так, чтобы планета вращалась по наклонной и неисчезающей орбите, в центре которой находилась бы звезда.
Задача 2.{4} Вычислите разность sqrt(1999)—sqrt(1998) (корень минус корень). Ответ выдать в обычной десятичной записи, причем, все цифры ответа должны быть верными!
Задача 3.{5} Найти экстремальные значения функции у=sin(n)на отрезке [1:1999], где n - натуральное число. В ответе указать не только найденные значения функции, но и аргументы, при которых они вычислены (значения функции вычислять с двойной точностью).
Задача 4.{6} Смоделировать процесс движения двух машин, выехавших одновременно из пунктов А и В, расстояние между которыми 60 км, если:
• скорости их постоянно равны 50 км/ч и 70 км/ч, соответственно;
• достигнув противоположного пункта, машины едут обратно;
• бензина у машин только на 9 часов пути;
• машины едут по разным полосам шоссе.
Зафиксировать время и место 10-й встречи этих машин.
Задача 5.{7} Составить все анаграммы 4-х буквенного слова, которое вводится с клавиатуры (пример анаграмм слова “лист”: лист, тлис, слит, ... и все другие возможные перестановки). Более сложный вариант задания - сформировать все перестановки символов строки произвольной длины (2...8 знаков). Вывести значение числа всех возможных перестановок..
Задача 6.{3} Составить программу рисования прямой линии между двумя точками с заданными координатами путем построения ее из отдельных пикселов - без использования оператора (процедуры) LINE. Следует использовать оператор PSET x, y, color в языке QBASIC или процедуру PutPixel (x, y, color) в языке PASCAL. Диапазон координат должен соответствовать максимальному разрешению графического видеорежима используемого компьютера (640х480 для VGA).
Задача 7.{4} Заданы два числа i, j - количества строк и столбцов таблицы, каждая клетка которой соответствует точно одному символу некоторого кода. Все символы различны. Составить программу для определения количества информации, содержащейся в сообщении, которое состоит из одного символа, кодируемого этой таблицей. Числа i и j вводятся с клавиатуры. Результат (размерность- бит, Кбит, МБит) выводится на дисплей. Следует стремиться обеспечить максимальный диапазон выводимых значений.
Задача 8.{5} Составить программу для нахождения всех прямоугольных треугольников с целочисленными сторонами и длиной гипотенузы не более 100, для которых справедлива теорема Пифагора. Известный пример - “египетский треугольник) со сторонами 3, 4, 5. Проверить гипотезу о том, что при этих условиях из равенства гипотенуз следует равенство треугольников.
Задача 9.{6} Составить программу, моделирующую проведение турнира по некоторому виду спорта. С клавиатуры вводится число команд (1.. .5) и их названия. С помощью генератора случайных чисел определяется счет в матчах между командами, которые встречаются между собой по одному разу. Максимальное число забитых и пропущенных мячей - 5. За победу в матче начисляется 2 очка, за ничью - 1, поражение - 0. На экран выводится итоговая турнирная таблица в обычной форме, а также число очков, набранных командами, разница забитых и пропущенных мячей и занятые командами места в соревновании. Если команды набрали одинаковое число очков, то учитывается разность забитых и пропущенных мячей.
Задача 10.{7} Дешифрация закодированного сообщения. Для шифрования использован немного модифицированный код Цезаря. Исходный текст без изменения порядка следования символов разбит на группы по три буквы каждая. Далее все первые буквы каждой из групп заменены на другие, смещенные на одно и то же число позиций в алфавите (по направлению к началу или концу) от положения шифруемой буквы. Использованный алфавит состоит только из заглавных русских букв (кроме Е) и как бы замкнут в кольцо. Так что если код шифруемой буквы оказывается, например, на 2 меньше кода буквы А, то она заменяется на букву Ю. Аналогично, если код на 3 больше кода буквы Я, то она заменяется на В. Далее тем же образом перекодированы вторые и третьи буквы в группах с использованием других численных значений смещения (положительных или отрицательных). При этом величина сдвига для всех букв, расположенных на одних и тех же местах в группах, сохраняется одинаковой. Для сокращения времени расчетов величина сдвига ограничена значениями от -5 до +5. Пробел кодируется буквой Э. Считается, что в тексте сообщения она не встречается. Для расшифровки сообщения служит ключ - кодовое слово, которое заведомо есть в исходном тексте (предполагается, что ключ добыт каким-то путем). Необходимо составить программу для автоматической дешифрации кода. Исходные данные: зашифрованный текст сообщения длиной не более 20 групп по 3 буквы, разделенных пробелами и кодовое слово длиной до 20 букв. Данные вводятся с клавиатуры, из файла или записываются в текст программы: в блок DATA, строку, массив, типизированную константу и т.п. На выходе - расшифрованное сообщение на экране или в файле.
Пример.
Исходный текст: СВЯЗЬ УСТАНОВИЛ ТЧК ШТИРЛИЦ
Замена пробелов: CВЯЗЬЭУСТАНОВИЛЭТЧКЭШТИРЛИЦ
Деление на группы: СВЯ ЗЬЭ УСТ АНО ВИЛ ЭТЧ КЭШ ТИР ЛИЦ
Кодирование по
схеме (+1,0,-1): ТВЮ ИЪЬ ФСС БНН ГИК ЮТЦ ЛЭЧ УИП МИХ
В качестве ключа может использоваться любое из слов:
СВЯЗЬ, ТЧК, ШТИРЛИЦ.