Задачи олимпиады по информатике
для учащихся среднего звена
(г. Гродно, 2008/2009 уч. г.)
Тур 1
1. «Помогите Незнайке»
(10 баллов). На уроке математики Мария Ивановна
предложила Незнайке решить такую задачу:
«Заданы два целых числа А и В (0≤А≤В≤30000). Требуется найти
сумму S всех целых чисел X таких, что А <Х<В».
Помогите Незнайке: составьте программу
решения этой задачи. Значения А и
В нужно ввести с клавиатуры, значение S вывести на
экран монитора.
Формат ввода
А
В
Формат вывода
S
Пример: |
Ввод |
Вывод |
|
5 |
45 |
|
10 |
Действительно, 5+6+7+8+9+10=45 |
2. «Напишите программу-кодировщик» (30
баллов).
Для шифровки сообщений решено применить новый метод шифрования.
По этому методу каждому символу ставится в соответствие
определенное целое число. Далее это число переводится в двоичную
систему счисления, и выполняются поочередные циклические сдвиги
его цифр: последняя цифра становится первой, а остальные цифры
сдвигаются на одну позицию вправо. Например, для числа 11 будет
получена такая последовательность двоичных чисел: 1011, 1101,
1110, 0111 (далее последовательность повторяется). Затем среди
полученных чисел выбирают максимальное число, которое после
перевода в десятичную систему счисления и представляет собой код
данного числа. Например, для числа 11 наибольшим окажется число
11102=1410.
Напишите программу, которая вводит с
клавиатуры целое число N (0 ≤ N ≤ 32767) и выводит на экран его
десятичный код, полученный по описанному алгоритму.
Формат ввода
N
Формат вывода
целое число - код числа
N
Замечания.
1. Во всех задачах считать, что данные корректны.
2. Время тестирования ограничено.
Задачи олимпиады по информатике
для учащихся среднего звена
(г. Гродно, 2008/2009 уч. г.)
Тур 2
1. «Примите участие в акции» (30
баллов). Проводится широкомасштабная акция. Для участия в
ней все участники делятся на отряды с одинаковым количеством
человек. Два способа разбиения одного и того же количества
участников на отряды будем считать различными, если в них либо
различное количество отрядов, либо различное количество человек
в отряде.
Напишите программу подсчета количества всех
возможных способов разбиения всех участников акции на отряды,
если известно, что в акции примет участие-К человек, где 1 < А <
К < В (1< А, В < 100000000).
Формат ввода:
Единственная строка входного файла input.txt содержит два
целых числа А и В, разделенные пробелом.
Выходные данные:
Единственная строка выходного файла output.txt содержит одно
целое число — количество различных способов разбиения всех
участников акции на отряды с одинаковым количеством человек.
Пример: |
input.txt |
output.txt |
|
3 5 |
7 |
Действительно, если количество участников
акции составляет:
3 человека, то существует 2 способа их
разбиения на отряды (3 отряда по 1 человеку в каждом и 1 отряд
из 3-х человек);
4 человека, то существует 3 способа их
разбиения на отряды (4 отряда по 1 человеку, 2 отряда по 2
человека, 1 отряд из 4-х человек);
5 человек, что существует 2 способа их
разбиения на отряды (5
отрядов по 1-му человеку в каждом и 1 отряд из 5-ти человек).
Таким образом, общее количество разбиения
всех участников акции на отряды равно 2+3+2=7.
2. «Постреляем?» (10 баллов). Николай
и его друзья во время прогулки по парку, зашли в тир. Николай
решил поразить мишень, состоящую из двух квадратов (см. рис.).
Напишите программу, которая ; вводит с
клавиатуры координаты (X, Y) точки попадания (или непопадания)
дроби в мишень и выводит слова «Попадание» или «Промах»; в
случае попадания выводит количество очков, причем за попадание в
малый квадрат дается 10 очков, а за попадание в большой квадрат
— 5 очков.
"Будем считать, что Николай попал в мишень, если координаты
точки попадания находятся_внутри одного из квадратов.
Формат ввода
X
Y
Формат вывода
Сообщение Попадание или Промах
Если будет выведено сообщение Попадание,
вывести количество набранных очков (10 или 5)
Пример: |
Ввод |
Вывод |
|
1.5 |
Попадание
|
|
-0.3 |
5 очков |
Замечания.
1. Во всех задачах считать, что данные корректны.
2. Время тестирования ограничено.