Задачи муниципального этапа олимпиады по информатике 2010-2011 Часть 1

advertisement
Задачи муниципального этапа олимпиады по информатике 2010-2011
Часть 1
Часть А содержит 5 заданий. Каждое задание оценивается в 20 баллов
Задачи части А1-А5 участники сдают при помощи текстового редактора Блокнот
В блокноте создается текстовый файл с именем output.txt
В этот файл вносится ответ (Например если ответ 1, то участник вписывает число 1)
Сохраняет файл.
При выборе компилятора - выбирается TXT.
Вот и все.
А1
Определите значение переменной a после выполнения фрагмента алгоритма:
Примечание: знаком * обозначено умножение, знаком := обозначена операция присваивания.
Выберите один ответ.
1. 8
2. 16
3. 32
4. 12
А2
Определите значение целочисленных переменных a и b после выполнения фрагмента программы:
Бейсик
Паскаль
Алгоритмический
a = 1819
b = (a \ 100) * 10 + 9
a = (10*b – a) MOD 100
a:= 1819;
b:= (a div 100)*10+9;
a:= (10*b–a) mod 100;
{div
и
mod
–
операции,
вычисляющие
результат
деления
нацело
первого
аргумента
на
второй
и
остаток от деления
соответственно}
a:= 1819
b:= div(a,100)*10+9
a:= mod(10*b – a,100)
'\ и MOD –
операции,
вычисляющие
результат
деления
нацело
первого
аргумента
на
второй
и
остаток
от
деления
соответственно
Выберите
один
ответ.
1. a = 81, b = 199
2. a = 81, b = 189
3. a = 71, b = 199
|div и mod – функции,
вычисляющие результат
деления нацело первого
аргумента на второй и
остаток от деления
соответственно|
4. a = 71, b = 189
А3
Значения двух массивов A[1..100] и B[1..100] задаются с помощью следующего фрагмента программы:
Бейсик
Паскаль
Алгоритмический
FOR n=1 TO 100
for n:=1 to 100 do
нц для n от 1 до 100
A(n) =n-10
A[n]:=n-10;
A[n]=n-10
NEXT n
for n:=1 to 100 do
кц
FOR n=1 TO 100
B[n]:=A[n]*n
B(n)=A(n)*n
нц для n от 1 до 100
NEXT n
B[n]=A[n]*n
кц
Сколько элементов массива B будут иметь положительные значения?
Выберите
один
1. 10
2. 50
3. 90
ответ.
4. 100
А4
В приведенном ниже фрагменте алгоритма, записанном на алгоритмическом языке, переменные a, b, c имеют тип «строка», а
переменные i, k – тип «целое». Используются следующие функции: Длина (a) – возвращает количество символов в строке a.
(Тип «целое») Извлечь (a, i) – возвращает i-тый (слева) символ в строке a. (Тип «строка») Склеить (a, b) – возвращает
строку, в которой записаны сначала все символы строки a, а затем все символы строки b. (Тип «строка») Значения строк
записываются в одинарных кавычках (Например, a := ‘дом’). Фрагмент алгоритма:
i := Длина (a)
k := 2
b := ‘А’
пока i > 0
нц
c := Извлечь (a, i)
b := Склеить (b, c)
i := i – k
кц
b := Склеить (b, ‘Т’)
Какое значение будет у переменной b после выполнения вышеприведенного фрагмента алгоритма, если значение
переменной a было ‘ПОЕЗД’?
Выберите
один
ответ.
1. ‘АДЕПТ’
2. ‘АДЗЕОП’
3. ‘АДТЕТПТ’
4. ‘АДЗОТ’
А5
У исполнителя Калькулятор две команды, которым присвоены номера:
1. прибавь 2
2. умножь на 3
Выполняя первую из них, Калькулятор прибавляет к числу на экране 2, а выполняя вторую, утраивает его. Запишите порядок
команд в программе получения из 0 числа 28, содержащей не более 6 команд, указывая лишь номера команд. (Например,
программа 21211 – это программа:
умножь на 3
прибавь 2
умножь на 3
прибавь 2
прибавь 2,
которая преобразует число 1 в 19).
Задачи муниципального этапа олимпиады по информатике 2010-2011
Часть 2
Во всех задачах Входной файл: input.txt Выходной файл: output.txt Ограничение по времени: 2 секунды
ВНИМАНИЕ! На муниципальном этапе работа с файлами не обязательна!
Z1. Кубики (100 баллов)
Прекрасным солнечным днем Вова прогуливался по берегу реки Волги. И тут он остановился — по реке плыли
деревянные кубики. Вова выловил их. Увидев, что на одной из сторон каждого кубиках написаны цифры, он решил
составить самое маленькое число, какое только можно, ведь ему опять нечем было заняться. Помогите Вовочке решить эту
непростую задачу.
Входные данные: В первой строке записано целое число N - количество кубиков (0<N<100001). Далее N цифр от 1 до
9, разделенных пробелом - цифры, написанные на кубиках.
Выходные данные: Вывести минимальное число.
Входные данные
Выходные
данные
14
1111122223
1 2 3 1 1 1 2 7 3 1 7 8 2 2 3778
Z2. Слово Бурундука (100 баллов)
Выстроим в круг N букв, пронумерованных числами от 1 до N. Будем исключать каждую k-ую букву до тех пор, пока
не останется только одна. (Например, если N=10, k=3, то сначала выбирается 3-я, потом 6-ая, затем 9-ая, затем 2-ая, затем 7ая, потом 1-ая, потом 8-ая, за ним - 5-ая, потом 10-ая и в конце остается 4-ая.). При этом образуется какое-то новое слово.
Назовем это слово - словом Бурундука. Ваша задача написать программу, которая получит слово Бурундука.
Входные данные: В первой строке вводится число N. Во второй строке водится слово состоящее из N любых
символов. В третьей строке число k.
Ограничения: 1<=N<=256, 1<=k<=256.
Выходные данные: Выдавать слово Бурундука.
Пример входного и выходного файла
Входные
данные
10
dlinnoseee
3
Выходные
данные
ioelsdenen
Z3. Треугольник и точка (100 баллов)
В декартовой системе координат на плоскости заданы координаты вершин треугольника и ещё одной точки.
Определить, принадлежит ли эта точка треугольнику. Координаты вершин - целые числа, для любой точки выполняются
следующие условия: -10 000 <= x, y <= 10 000, время 1 с.
Входные данные. В четырёх строках находятся пары чисел - координаты точек. Числа в первых трёх строках - это
координаты вершин треугольника, в четвёртой строке - координаты тестируемой точки.
Выходные данные. Вывести слово "In", если точка находится внутри треугольника, или "Out" - если снаружи.
Пример:
Входные
данные
Выходные
данные
00
100 0
0 100
100 100
Out
00
100 0
0 100
10 10
In
Z4. "Морской бой " (100 баллов)
Малыш играет в "Морской бой". Поле для игры представляет собой квадрат N x N клеток. На поле отмечены клетки, в
которые Малыш уже стрелял. Однако пока он не попал ни в один корабль противника. Требуется определить максимальную
длину корабля, который может поместиться в небитых клетках этого поля. Корабль представляет из себя прямоугольник
ширины 1 и располагается горизонтально или вертикально. (Гарантируется, что на поле есть хотя бы одна небитая клетка.)
Входные данные
Ввести в первой строке натуральное число N –размеры поля. В последующих N строк по N чисел в каждой, числа
разделены пробелами. Число 1 означает, что в соответствующую клетку стреляли, число 0 – что в клетку не стреляли.
Выходные данные:
Вывести одно число от 1 до N – максимальную возможную длину корабля.
Пример входных и выходных данных.
Входные
Выходные
данные
данные
10
9
000000
0001
000000
0010
000000
0100
000000
1000
000001
0000
000010
0000
000100
0000
001000
0000
010000
0000
100000
0000
Z5. "Сладкоежка". (100 баллов)
В кондитерском магазине лежит ряд пакетов с конфетами. Для каждого пакета известно количество конфет в нем.
Покупатель может взять в одну руку два соседних пакета и в другую - тоже два соседних (возможно, в другом месте ряда).
При этом он хочет, чтобы количество конфет в четырех взятых им пакетах было максимальным. Решите за покупателя эту
задачу.
Входные данные
Первая строка входных данных содержит количество пакетов (N <= 30 000). Во второй строке - N целых чисел,
разделенных пробелами, - количество конфет в пакетах K (K<=2000).
Выходные данные
Выходные данные должен содержать одну строку. В ней должны быть записаны 4 целых числа - номера выбранных
пакетов. Первые два числа - номера пакетов в первой паре, вторые два числа - номера пакетов во второй паре. Номера пар
должны быть выданы по возрастанию.
Входные
Выходные
данные:
данные
5
62134
1245
Z6. Симметрия цифр. (100 баллов)
На вход программе подается набор символов, заканчивающийся точкой Напишите эффективную, в том числе и
по используемой памяти, программу, которая сначала будет определять, есть ли в этом наборе символы,
соответствующие десятичным цифрам. Если такие символы есть, то можно ли переставить их так, чтобы полученное
число было симметричным (читалось одинаково как слева направо, так и справа налево). Ведущих нулей в числе быть не
должно, исключение – число 0, запись которого содержит ровно один ноль. Если требуемое число составить невозможно,
то программа должна вывести на экран слово “NO”. А если возможно, то в первой строке следует вывести слово
“YES”, а во второй – искомое симметричное число. Если таких чисел несколько, то программа должна выводить
максимальное из них.
Входные данные: На вход подаются набор символов длиной не более 255, заканчивающийся точкой.
Выходные данные: Вывести слово “NO” если требуемое число составить невозможно, а если возможно, то в
первой строке следует вывести слово “YES”, а во второй – искомое симметричное число.
Пример входных и выходных данных
Входные данные
Выходные данные
Do not 911 to 09 do.
YES
91019
Z7. График (100 баллов)
Написать программу, которая вводит с клавиатуры координаты точки на плоскости (x, y – действительные числа) и
определяет
принадлежность
точки
заштрихованной
области,
включая
ее
границы.
Входные данные: На вход подаются два действительных числа x,y
Выходные данные: Вывеси слово “NO” если точка не принадлежит области, если принадлежит вывести “YES”
Пример входных и выходных данных
Входные данные
Выходные данные
0 0.5
YES
10 10
NO
Download