/
Текст
ГОСУДАРСТВЕННАЯ ИТОГОВАЯ АТТЕСТАЦИЯ
100
БАЛЛОВ
ЕГЭ-ШКОЛЬНИКАМ
И УЧИТЕЛЯМ
ИНФОРМАТИКА
20 ТРЕНИРОВОЧНЫХ ВАРИАНТОВ
ЭКЗАМЕНАЦИОННЫХ РАБОТ
ДЛЯ ПОДГОТОВКИ
К ЕДИНОМУ
ГОСУДАРСТВЕННОМУ
ЭКЗАМЕНУ
Д.М. УШАКОВ
ЕГЭ-2018
Д. М. Ушаков
ИНФОРМАТИКА
20
ТРЕНИРОВОЧНЫХ ВАРИАНТОВ
ЭКЗАМЕНАЦИОННЫХ РАБОТ
ДЛЯ ПОДГОТОВКИ
К ЕДИНОМУ ГОСУДАРСТВЕННОМУ
ЭКЗАМЕНУ
Москва
ACT
УДК 373:002
ББК32.81я721
У93
Ушаков, Денис Михайлович.
У93 ЕГЭ-2018 : Информатика : 20 тренировочных вариантов экзаменационных работ
для подготовки к единому государственному экзамену / Д.М. Ушаков. — Москва: ACT,
2017. — 287, [1] с. — (ЕГЭ-2018. Большой сборник тренировочных вариантов).
ISBN 978-5-17-103093-3
Вниманию школьников и абитуриентов предлагается пособие для подготовки к ЕГЭ, которое содержит
20 тренировочных вариантов экзаменационных работ.
Каждый вариант составлен в соответствии с требованиями единого государственного экзамена, включает
задания разных типов и сложности по основным разделам курса информатики.
В конце пособия даны ответы для самопроверки на все задания части 1 и критерии оценивания заданий
с развёрнутым ответом части 2.
Материал сборника может быть использован для планомерного повторения изученного материала
и тренировки выполнения заданий различного типа при подготовке к экзамену.
УДК 373:002
ББК 32.81я721
ISBN 978-5-17-103093-3
© Ушаков Д.М.
© ООО «Издательство АСТ»
СОДЕРЖАНИЕ
Предисловие.........................4
Инструкция по выполнению работы.....5
ВАРИАНТЫ ТРЕНИРОВОЧНЫХ РАБОТ . 6
Вариант 1...........................6
Вариант 2..........................17
Вариант 3..........................28
Вариант 4..........................38
Вариант 5..........................49
Вариант 6..........................60
Вариант 7..........................72
Вариант 8..........................83
Вариант 9..........................95
Вариант 10..........................106
Вариант 11..........................116
Вариант 12..........................127
Вариант 13..........................139
Вариант 14..........................149
Вариант 15..........................160
Вариант 16..........................172
Вариант 17..........................183
Вариант 18........................ 195
Вариант 19..........................207
Вариант 20..........................218
Ответы..............................229
ПРЕДИСЛОВИЕ
Уважаемые учащиеся старших классов, абитуриенты и учителя!
Вашему вниманию предлагается сборник типовых вариантов экзаменационных работ по
информатике для подготовки к ЕГЭ в 2018 году.
Содержание заданий разработано по основным темам курса информатики и ИКТ, объеди-
нённым в следующие тематические блоки: «Информация и её кодирование», «Моделирование
и компьютерный эксперимент», «Системы счисления», «Логика и алгоритмы», «Элементы
теории алгоритмов», «Программирование», «Архитектура компьютеров и компьютерных се-
тей», «Обработка числовой информации», «Технологии поиска и хранения информации».
Данный сборник содержит 20 типовых вариантов экзаменационных работ, составленных в
соответствии с демонстрационным вариантом и спецификацией 2017 года.
Каждый вариант состоит из двух частей и включает в себя 27 заданий, различающихся фор-
мой и уровнем сложности.
Часть 1 содержит 23 задания с кратким ответом нескольких разновидностей:
• задания на выбор и запись одного или нескольких правильных ответов из предложенного
перечня ответов;
• задания на вычисление определённой величины;
• задания на установление правильной последовательности, представленной в виде строки
символов по определённому алгоритму.
В части 1 12 заданий относится к базовому уровню, 10 заданий к повышенному уровню
сложности, 1 задание — к высокому уровню сложности.
Задания проверяют материал всех тематических блоков.
Часть 2 содержит 4 задания, первое из которых повышенного уровня сложности, остальные
3 задания высокого уровня сложности. Задания этой части подразумевают запись развёрнуто-
го ответа в произвольной форме.
Задания части 2 направлены на проверку сформированности важнейших умений записи
и анализа алгоритмов и умения по теме «Технология программирования», предусмотренных
требованиями к обязательному уровню подготовки по информатике учащихся средних обще-
образовательных учреждений.
В конце пособия представлены ответы для проверки решений.
В связи с возможными изменениями в формате и количестве заданий рекомендуем в про-
цессе подготовки к экзамену обращаться к материалам сайта официального разработчика эк-
заменационных заданий — Федерального института педагогических измерений: www.fipi.ru.
ИНСТРУКЦИЯ ПО ВЫПОЛНЕНИЮ РАБОТЫ
Экзаменационная работа состоит из двух частей, включающих в себя 27 заданий. Часть 1
содержит 23 задания с кратким ответом. Часть 2 содержит 4 задания с развёрнутым ответом.
На выполнение экзаменационной работы по информатике и ИКТ отводится 3 часа 55 минут
(235 минут).
Ответы к заданиям 1-23 записываются в виде числа, последовательности букв или цифр.
Ответ запишите в поле ответа в тексте работы, а затем его нужно перенести в бланк ответов № 1.
Ответ:_Ж*Р_ Ю /1 К К Р
Задания 24-27 требуют развёрнутого решения. В бланке ответов № 2 указывается номер
задания и записывается его полное решение.
Все бланки ЕГЭ заполняются яркими чёрными чернилами. Допускается использование ге-
левой, капиллярной или перьевой ручек.
При выполнении заданий можно пользоваться черновиком. Записи в черновике не учиты-
ваются при оценивании работы.
Баллы, полученные Вами за выполненные задания, суммируются. Постарайтесь выпол-
нить как можно больше заданий и набрать наибольшее количество баллов.
Желаем успеха!
В экзаменационных заданиях используются следующие соглашения.
1. Обозначения для логических связок (операций):
а) отрицание (инверсия, логическое НЕ) обозначается -- (например, -А);
Ь) конъюнкция (логическое умножение, логическое И) обозначается /\ (например, А Д В)
либо & (например, А&В);
с) дизъюнкция (логическое сложение, логическое ИЛИ) обозначается V (например, А V В)
либо | (например, А|В);
d) следование (импликация) обозначается -> (например, А —> В);
е) тождество обозначается = (например, А = В). Выражение А = В истинно тогда и только
тогда, когда значения А и В совпадают (либо они оба истинны, либо они оба ложны);
f) символ 1 используется для обозначения истины (истинного высказывания); символ 0 —
для обозначения лжи (ложного высказывания).
2. Два логических выражения, содержащих переменные, называются равносильными (эк-
вивалентными), если значения этих выражений совпадают при любых значениях переменных.
Так, выражения А -> В и (^А) VB равносильны, а А VВ и А ДВ неравносильны (значения вы-
ражений разные, например, при А = 1, В = 0).
3. Приоритеты логических операций: инверсия (отрицание), конъюнкция (логическое ум-
ножение), дизъюнкция (логическое сложение), импликация (следование), тождество. Таким
образом, -А ДВ \/С ДП означает то же, что и ((-А) ДВ) V(C ДО).
Возможна запись А ДВ ДС вместо (А Д В) ДС. То же относится и к дизъюнкции: возможна
запись A VB VC вместо (A VB) \!С.
4. Обозначения Мбайт и Кбайт используются в традиционном для информатики смысле —
как обозначения единиц измерения, чьё соотношение с единицей «байт» выражается степенью
двойки.
ВАРИАНТЫ ТРЕНИРОВОЧНЫХ РАБОТ
ВАРИАНТ 1
Часть 1
Ответами к заданиям 1—23 являются число, последовательность букв или цифр, кото-
рые следует записать в БЛАНК ОТВЕТОВ № 1 справа от номера соответствующего зада-
ния, начиная с первой клеточки, без пробелов, запятых и других дополнительных симво-
лов. Каждый символ пишите в отдельной клеточке в соответствии с приведёнными в бланке
образцами.
Сколько единиц в двоичной записи числа 197?
Ответ:____________________________________________________________________________
2
Дан фрагмент таблицы истинности выражения F, зависящего от трёх аргументов X, Y, Z:
X Y Z F
0 0 1 0
1 1 0 1
0 1 1 0
Перечислите в порядке возрастания без запятых и пробелов номера логических выраже-
ний, которые соответствуют F:
1)XAYV-Z
2) ^XA-YA^Z
3)XAYA-Z
4)XVYV-'Z
5)XVYA-Z
Ответ:____
и
На рисунке справа схема дорог Н-ского района изображена в виде графа, в таблице содер-
жатся сведения о длинах этих дорог (в километрах).
Так как таблицу и схему рисовали независимо друг от друга, то нумерация населённых пун-
ктов в таблице никак не связана с буквенными обозначениями на графе. Определите, какова
длина дороги и пункта В в пункт Д. В ответе запишите целое число — так, как оно указано
в таблице.
Ответ: •
4__ Для групповых операций с файлами используются маски имён файлов. Маска представ-
ляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов,
в которой также могут встречаться следующие символы.
Символ «?» (вопросительный знак) означает ровно один произвольный символ.
Символ «*» (звёздочка) означает любую последовательность символов произвольной дли-
ны, в том числе «*» может задавать и пустую последовательность.
В каталоге находятся шесть файлов:
boom.pas
bloom.ppt
loom.pas
bottom.pdf
bom.pps
boom.ppt
Ниже представлено восемь масок. Сколько из них таких, которым соответствует ровно
четыре файла из данного каталога?
?оо*т.р*
Ь*о*от.р??
*о*от.р*?
Ь*от,р?*
Ьо*т.???
*от.*р*
*о*о*.р*?
Ответ:.
5 Через канал связи передаётся сообщение, состоящее только из символов А, Б, В и Г.
Эти символы кодируются неравномерным (по длине) кодом: A-О, Б-10, В-110, Г-111.
Исходное сообщение: ВГВБАВА. Закодируйте сообщение приведённым кодом. Получен-
ную последовательность переведите в шестнадцатеричный вид. В ответе запишите последова-
тельность шестнадцатеричных цифр без запятых.
Ответ:.
6 У исполнителя Удвоитель две команды, которым присвоены номера:
1. умножь на 2,
2. прибавь 1.
Первая из них удваивает число на экране, вторая — увеличивает его на 1.
Запишите порядок команд в программе преобразования числа 4 в число 41, содержащей
не более 5 команд, указывая лишь номера команд. (Например, 21211 — это программа
прибавь 1
умножь на 2
прибавь 1
умножь на 2
умножь на 2,
которая преобразует число 1 в 20.)
(Если таких программ более одной, то запишите любую из них.)
Ответ:.
7
В электронной таблице значение формулы =СРЗНАЧ (АЗ : D4) равно 5. Чему равно значение
формулы =СРЗНАЧ (АЗ : С4), если значение формулы =СУММ (D3: D4) равно 4?
Ответ:____________________________________________________________________________.
8 Определите, что будет напечатано в результате выполнения следующего фрагмента про-
граммы:
Бейсик Паскаль
DIM k, s AS INTEGER к = 0 s = 5 WHILE s < 205 s = s + 10 к = к + 1 WEND PRINT к var к, s : integer; begin к := 0; s : = 5; while s < 205 do begin s := s + 10; к := к + 1 end; write(k); end.
Си Алгоритмический язык
int к, s; к = 0; s = 5; while (s < 205) { s = s + 10 ; к = к + 1; } printf("%d", к); } нач цел k, s k := 0 s : = 5 нц пока s < 205 s := s + 10 k := k + 1 КЦ вывод k KOH
Ответ:,
9 Скольких различных цветов (наибольшее количество) могут быть пиксели неупакованно-
го растрового изображения, имеющего размер 1024x256 пикселей и занимающего на диске
160 килобайт?
Ответ:.
10 Азбука Морзе позволяет кодировать символы для сообщений по радиосвязи, задавая ком-
бинацию точек и тире. Сколько различных символов (цифр, букв, знаков пунктуации и т. д.)
можно закодировать, используя код Морзе длиной не менее трёх и не более четырёх сигналов
(точек и тире)?
Ответ:.
11
Дан рекурсивный алгоритм F. Приведите последовательность чисел (без пробелов), напеча-
танных на экране при выполнении вызова F(4)?
Бейсик Паскаль
SUB F(n) PRINT n; IF n > 1 THEN F(n - 1) F(n - 2) END IF END SUB procedure F(n: integer); begin write(n); if n > 1 then begin F(n - 1) ; F(n - 2) end end;
Си Алгоритмический язык
void F(int n) алг F(цел n)
{ нач
printf ("%d",n); ВЫВОД n
if (n > 1) если n > 1 то
{ F(n - 1)
F(n - 1) ; F(n - 2)
F(n - 2) ; все
} кон
)
Ответ:.
12 Доступ к файлу www.com, находящемуся на сервере http.txt, осуществляется по протоколу
ftp.
В таблице фрагменты адреса файла закодированы буквами от А до G.
Запишите последовательность этих букв, кодирующую адрес указанного файла.
А В с D Е F G
:// WWW .txt http ftp .com /
Ответ:.
13 Репетиционный экзамен в школе сдают 105 человек. Каждому из них выделяют специаль-
ный номер, идентифицирующий его в автоматической системе проверки ответов. При реги-
страции участника для записи его номера система использует минимально возможное количе-
ство бит, одинаковое для каждого участника. Каков объём информации в битах, записанный
устройством после регистрации 60 участников?
Ответ:.
14
Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетча-
той плоскости:
вверх вниз влево вправо
При выполнении этих команд РОБОТ перемещается на одну клетку соответственно:
вверх Т, вниз I, влево <—, вправо —
Четыре команды проверяют истинность условия отсутствия стены у той клетки, где нахо-
дится РОБОТ:
сверху свободно снизу свободно слева свободно справа свободно
Цикл ПОКА <условие> команда
выполняется, пока условие истинно, иначе происходит пере- ход на следующую строку. Сколько клеток приведённого лабиринта соответствует требо- ванию, что, выполнив предложенную ниже программу, РОБОТ остановится в той же клетке, с которой он начал движение? НАЧАЛО ПОКА Сслева свободно> влево ПОКА <сверху свободно> вверх ПОКА <справа свободно> вправо
ПОКА <снизу свободно вниз
КОНЕЦ
Ответ:.
15 На карту нанесены 4 города (А, В, С и D).
Известно, что:
между городами А и С — две дороги,
между городами А и В — три дороги,
между городами В и С — четыре дороги,
между городами С и D — три дороги,
между городами В и D — три дороги.
По каждой из этих дорог можно ехать в обе стороны. Сколькими различными способами
можно проехать из А в D, посещая каждый город не более одного раза?
Ответ:.
16
17
18
19
В системе счисления с некоторым основанием десятичное число 51 записывается в виде
102. Укажите это основание.
Ответ:.
В таблице приведены запросы к поисковому серверу. Расположите номера запросов в по-
рядке возрастания количества страниц, которые найдёт поисковый сервер по каждому запро-
су. В ответе перечислите цифры без пробелов и знаков препинания.
Для обозначения логической операции «ИЛИ» в запросе используется символ «|», а для
логической операции «И» — «&».
№ Запрос
1 кролики|лисицы
2 (зайцы & кролики) | (лисицы & волки)
3 зайцы & кролики & лисицы & волки
4 зайцы & кролики
Ответ:
На числовой прямой даны отрезки Р = [5, 13] и Q = [8, 19]. Укажите наименьшую возмож-
ную длину такого отрезка А, что формула (-(х е Р) -> (х е Q)) —> (х е А) верна при любых зна-
чениях х.
Ответ:.
В программе используется целочисленный массив А с индексами от 0 до 9. Значения эле-
ментов массива равны 4; 7; 6; 4; 2; 3; 5; 10; 7; 8 соответственно, т. е. А[0] = 4; А[1] = 7 и т. д.
Определите значение переменной с после выполнения следующего фрагмента программы,
записанной ниже на разных языках программирования.
Бейсик Паскаль
с = 0 FOR i = 0 ТО 4 IF A(i) < A(9-i) THEN c = c + 1 k = A(i) A(i) = A(9-i) A(9-i) = k ENDIF NEXT i c : = 0 ; for i := 0 to 4 do if A[i] < A[9-i] then begin c : = c + 1; k := A [ i ]; A[i] := A[9-i]; A[9-i] := k; end;
Си Алгоритмический язык
с = 0; k := 0
for (i=0 ; i<=4 ; i++) if (Afi] < A[9-i]) { c = c + 1; k = Afi]; нц для i от 0 до 4 если Afi] < А[9-i] то с : = с + 1 k := Afi]
Afi] = A[9-i]; Afi] := A[9-i]
A[9-i] = k; } A[9-i] : = к все КЦ
Ответ:__________________________________________________________________________________
20
Ниже на четырёх языках записан алгоритм. Получив на вход число х, этот алгоритм пе-
чатает два числа L и М. Укажите наименьшее из таких чисел х, при вводе которых алгоритм
печатает сначала 3, а потом 7.
Бейсик Паскаль
DIM X, L, М AS INTEGER var x, L, M: integer;
INPUT X begin
L = 94 : M = 0 readln(x);
WHILE L >= X L := 94; M := 0;
M = M + 1 while L >= x do
L = L - X begin
WEND M := M + 1;
IF M < L THEN L := L - x
X = M end;
M = L if M < L then
L = X begin
ENDIF x := M;
PRINT L M := L;
PRINT M L : = x
end;
writein (L); write(M)
end.
Си Алгоритмический язык
#include<stdio.h> алг
void main() нач
{ цел х, L, М
int x, L, M; ВВОД X
scanf("%d", &x); L := 94; М := 0
L = 94; M = 0; нц пока L >= х
while (L >= x){ М := М + 1
M = M + 1; L := L - х
L = L - x; КЦ
} если М < L
if (M < L) { ТО
x = M; X := М
M = L; М := L
L = x; L : = х
} все
printf("%d\n%d", L, M); вывод L, нс, М
} кон
21
Определите, какое число будет напечатано в результате выполнения следующего алгоритма
(для Вашего удобства алгоритм представлен на четырёх языках):
Бейсик Паскаль
DIM А, В, Т, М, R AS INTEGER А = -25: В = 25 М = A: R = F(А) FOR Т = А ТО В IF F (Т) < R THEN M - T R = F(Т) END IF NEXT T PRINT M + 9 FUNCTION F (x) F = (x*x - 9)*(x*x - 9) - 5 END FUNCTION var a, b, t, M, R : integer; function F(x : integer) : integer; begin F := (x*x-9)*(x*x-9) - 5 end; BEGIN a := -25; b := 25; M := a; R := F(a); for t := a to b do begin if F(t) < R then begin M := t; R := F(t) end end; write(M + 9) END.
Си Алгоритмический язык
int F (int x) { return (x*x - 9)*(x*x - 9)-5; ) void main () { int a, b, t, M, R; a = -25; b = 25; M = a; R = F(a); for (t = a; t <= b; t++) { if ( F(t) < R ) ( M = t; R = F(t); ) } printf("%d", M + 9); } алг нач цел a, b, t, М, R а := -25; Ь := 25 М := a; R := F(a) нц для t от а до b если F(t) < R ТО М := t R := F(t) все кц вывод М + 9 кон алг цел F(цел х) нач знач := (х*х - 9)* (х*х - 9) - 5 кон
Ответ:.
22 У исполнителя Удвоитель две команды, которым присвоены номера:
1. прибавь 3,
2. умножь на 2.
Первая из них увеличивает число на экране на 3, вторая удваивает его.
Программа для Удвоителя — это последовательность команд.
Сколько есть программ, которые число 1 преобразуют в число 25?
Ответ:
23
Сколько существует различных наборов значений логических переменных хр х2, ... ху х10,
которые удовлетворяют всем перечисленным ниже условиям?
Ответ:.
(Xj V^x2) Л(х3 V^4) = 1
(x3V^x4)A(x5 V^x6) = 1
(x6 V^X6) A(x, V-Xg) = 1
(x7 V^x8) Л(х9 V^10) = 1
В ответе не нужно перечислять все различные наборы значений хг х2,... х9, х10, при которых
выполнена данная система равенств. В качестве ответа вам нужно указать количество таких
наборов.
Ответ:.
Не забудьте перенести все ответы в бланк ответов № 1 в соответствии с инструкцией
по выполнению работы.
Часть 2
Для записи ответов на задания этой части (24—27) используйте БЛАНК ОТВЕТОВ № 2.
Запишите сначала номер задания (24, 25 и т. д.), а затем полное решение. Ответы записы-
вайте чётко и разборчиво.
24 Требовалось написать программу, которая вводит с клавиатуры натуральное число N
(N < 109) и выводит на экран наибольшую чётную цифру числа. Если в числе нет чётных цифр,
программа должна вывести на экран «NO». Программист торопился и написал программу не-
правильно.
Паскаль Бейсик
var N, d, m: integer; begin readln(N); tn := N mod 10; while N > 0 do begin d :- N mod 10; if d > m then if d mod 2=0 then m := d; N : = N div 10 end; if m = 0 then writein('NO') else writein(m) end. DIM N AS LONG INPUT N m = N MOD 10 WHILE N > 0 d = N MOD 10 IF d > m THEN IF d MOD 2=0 THEN m = d END IF END IF N = N \ 10 WEND IF m = 0 THEN PRINT "NO" ELSE PRINT m END IF END
Си Алгоритмический язык
#include<stdio.h> алг
int main () нач
{ цел N, m, d
long int N; ввод N
int d, m; m := mod(N,10)
scanf("%ld", &N) ; нц пока N > 0
m = N % 10; d := mod(N,10)
while (N > 0) если d > m то
{ если mod(d,2) = 0 to
d = N % 10; m : = d
if (d > m) все
if (d % 2 == 0) все
m = d; N := div(N, 10)
N = N /10; КЦ
} если m = 0 то
if (m == 0) вывод 'NO'
printf("NO"); иначе
else вывод m.
printf("%d", m); все
} кон
Выполните следующие действия:
1. Напишите, что выведет программа при вводе числа 527.
2. Приведите пример такого числа, при котором программа работает верно.
3. Укажите все ошибки в программе и исправьте их. Для этого для каждой ошибки:
выпишите строку, которая написана неправильно и приведите правильный вариант
строки.
25
Дан целочисленный массив из 28 элементов. Элементы массива могут принимать значения
от 0 до 100 — процент выполнения учащимися домашних заданий по информатике. Для полу-
чения положительной оценки за год требовалось набрать не менее 40 баллов. Опишите на рус-
ском языке или на одном из языков программирования алгоритм, который находит и выводит
минимальный балл среди учащихся, получивших за год положительную оценку. Гарантирует-
ся, что в классе хотя бы один учащийся получил за год положительную оценку.
Исходные данные объявлены так, как показано ниже. Запрещается использовать перемен-
ные, не описанные ниже, но разрешается не использовать часть из них.
Паскаль Бейсик
const N = 28; var a: array [1..N] of integer; i, j, min: integer; begin for i := 1 to N do readin(a[i]); end. N = 28 DIM A(N) AS INTEGER DIM I, J, MIN AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I END
СИ Алгоритмический язык
#include <stdio.h> # define N 28 void main(void) {int a [N]; int i, j, min; for (i=0; i < N; i++) scanf("%d", &a[i]); } алг нач цел N = 28 целтаб a[l:N] цел i, j, MIN нц для i от 1 до N ввод а[i] кц кон
Русский (естественный) язык
Объявляем массив А из 28 элементов. Объявляем целочисленные переменные I, J, MIN. В цикле от 1 до 28 вводим элементы массива А с 1-го по 28-й.
В качестве ответа вам необходимо привести фрагмент программы (или описание алгоритма
на естественном языке), который должен находиться на месте многоточия. Вы можете запи-
сать решение также на другом языке программирования (укажите название и используемую
версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом
случае вы должны использовать те же самые исходные данные и переменные, какие были пред-
ложены в условии (например, в образце, записанном на естественном языке).
26 Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней.
Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу
1 камень или удвоить количество камней в куче. Например, имея кучу из 8 камней, за один
ход можно получить кучу из 9 или 16 камней. У каждого игрока, чтобы делать ходы, есть не-
ограниченное количество камней. Игра завершается в тот момент, когда количество камней в
куче становится не менее 26. Победителем считается игрок, сделавший последний ход, то есть
первым получивший кучу, в которой будет 26 или больше камней.
В начальный момент в куче было S камней, 1 < S < 25.
Говорят, что игрок имеет выигрышную стратегию, если он может выиграть при любых хо-
дах противника. Описать стратегию игрока — значит описать, какой ход он должен сделать в
любой ситуации, которая ему может встретиться при различной игре противника.
Выполните следующие задания. Во всех случаях обосновывайте свой ответ.
1. а). При каких значениях числа S Петя может выиграть первым ходом? Укажите все такие
значения.
б) . Укажите такое значение S, при котором Петя не может выиграть за один ход, но при лю-
бом ходе Пети Ваня может выиграть своим первым ходом. Опишите выигрышную стратегию
Вани.
2. Укажите два значения S, при которых у Пети есть выигрышная стратегия, причём Петя
не может выиграть за один ход, но может выиграть своим вторым ходом независимо от того,
как будет ходить Ваня. Для указанных значений S опишите выигрышную стратегию Пети.
3. Укажите такое значение S, при котором у Вани есть выигрышная стратегия, позволя-
ющая ему выиграть первым или вторым ходом при любой игре Пети, но при этом у Вани нет
стратегии, которая позволит ему гарантированно выиграть первым ходом. Для указанного
значения S опишите выигрышную стратегию Вани. Постройте дерево всех партий, возможных
при этой выигрышной стратегии Вани (в виде рисунка или таблицы). На рёбрах дерева указы-
вайте, кто делает ход, в узлах — количество камней в куче.
27 На вход программы подаётся: в первой строке — количество входных чисел N.
В последующих N строках — последовательность из N целых чисел. Известно, что каждое
число положительное и не превышает 109.
Напишите эффективную, в том числе и по используемой памяти, программу (укажите ис-
пользуемую версию языка программирования, например, Borland Pascal 7.0), которая должна
вывести на экран максимальное произведение двух различных элементов последовательности,
которое кратно 6. Под «различными» нужно понимать не различные значения, а различные
номера в последовательности. То есть, результат может быть квадратом некоторого числа, если
оно в последовательности встречается не менее двух раз (и при этом максимален).
Если такой пары элементов нет, программа должна вывести нуль.
Пример входных данных:
4
9
10
29
3
Пример выходных данных:
90
ВАРИАНТ 2
Часть 1
Ответами к заданиям 1—23 являются число, последовательность букв или цифр, кото-
рые следует записать в БЛАНК ОТВЕТОВ № 1 справа от номера соответствующего зада-
ния, начиная с первой клеточки, без пробелов, запятых и других дополнительных симво-
лов. Каждый символ пишите в отдельной клеточке в соответствии с приведёнными в бланке
образцами.
1 Сколько существует натуральных чисел х, для которых выполнено неравенство
3218 < х < DE16? В ответе укажите только количество чисел, сами числа писать не нужно.
Ответ:.
2 Логическая функция F задаётся выражением z Д(г/ V ^)-
На рисунке приведён фрагмент таблицы истинности функции F, содержащий все наборы
аргументов, при которых функция F истинна.
Определите, какому столбцу таблицы истинности функции F соответствует каждая из пере-
менных х, у, 2.
Перем. 1 Перем. 2 Перем. 3 Функция
??? ??? ??? F
0 1 0 1
1 1 0 1
1 1 1 1
В ответе напишите буквы х, у, г в том порядке, в котором идут соответствующие им столбцы
(сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая второ-
му столбцу; затем — буква, соответствующая третьему столбцу). Буквы в ответе пишите под-
ряд, никаких разделителей между буквами ставить не нужно.
Пример. Пусть задано выражение х -> у, зависящее от двух переменных х и у, и таблица
истинности:
Перем. 1 Перем. 2 Функция
??? ??? F
0 0 1
0 1 0
1 0 1
1 1 1
Тогда первому столбцу соответствует переменная у, а второму столбцу — переменная х.
В ответе нужно написать: ух.
Ответ:
3
На рисунке справа схема дорог Н-ского района изображена в виде графа, в таблице содер-
жатся сведения о длинах этих дорог (в километрах).
П1 П2 ПЗ П4 П5 116 П7
П1 60 45
112 50 20 10
ПЗ 50 40 30 25
114 60 20 40 15 55
П5 10 15
116 30 35
П7 45 25 55 35
Так как таблицу и схему рисовали независимо друг от друга, то нумерация населённых пун-
ктов в таблице никак не связана с буквенными обозначениями на графе. Определите, какова
длина дороги и пункта Д в пункт К. В ответе запишите целое число — так, как оно указано
в таблице.
Ответ:.
4
Дан фрагмент базы данных, содержащий информацию о родственных отношениях. Опреде-
лите на основании приведённых данных ID дедушки Марченко Е.Е.
Таблица 1
ID Фамилия И.О. Пол
1453 Дени К.Д. /tv
2185 Ирта О.Б. *гг/» /tv
2605 Гано И.Е. ПТ/» jTv
3474 Ивенко Д.Я. M
4218 Бабенко А. Е. M
5363 Марченко Е.Е. M
5771 Арне А.А. M
7148 Камо Е.А. M
7814 Исава Г. А. •ш» /tv
8208 Сорт А.К. •утл /tv
...
Ответ:
Таблица 2
ГО_Родителя 1Б_Ребёнка
5363 4218
2185 4218
7148 5363
1453 5363
3474 1453
7814 1453
7148 2605
1453 2605
2605 8208
5771 7814
... ...
5
Для 5 букв латинского алфавита заданы их двоичные коды. Эти коды представлены в та-
блице:
A В с D Е
00 100 110 01 101
Определите, какой набор букв закодирован двоичной последовательностью
110011000011010101. В ответе запишите последовательность букв без запятых.
Ответ:
6 Автомат получает на вход два двузначных шестнадцатеричных числа. В этих числах все
цифры не превосходят цифру 6 (если в числе есть цифра больше 6, автомат отказывается рабо-
тать). По этим числам строится новое шестнадцатеричное число по следующим правилам.
1. Вычисляются два шестнадцатеричных числа — сумма старших разрядов полученных чи-
сел и сумма младших разрядов этих чисел.
2. Полученные два шестнадцатеричных числа записываются друг за другом в порядке не-
возрастания (без разделителей).
Пример. Исходные числа: 25, 66. Поразрядные суммы: 8, В. Результат: В8.
Какие из предложенных чисел могут быть результатом работы автомата?
Перечислите в алфавитном порядке буквы, соответствующие этим числам, без пробелов
и знаков препинания.
А) 127
В) С6
С) ВА
D)E3
E)DA
Ответ:.
7
При работе с электронной таблицей в ячейку СЗ записана формула: =$ВЗ+С$2. Какой вид
приобретёт формула, после того как ячейку СЗ скопируют в ячейку D2?
Ответ:.
Ев
Определите, что будет напечатано в результате выполнения следующего фрагмента про-
граммы:
Бейсик Паскаль
DIM k, s AS INTEGER к = 2 s = 8 WHILE s < 500 s = s + 20 к = к + 5 WEND PRINT к var к, s : integer; begin к := 2; s := 8; while s < 500 do begin s : = s + 2 0; к : = к + 5 end; write(k); end.
Си Алгоритмический язык
{ int к, s; к = 2; s = 8 ; while (s < 500) { s = s + 2 0; к = к + 5; } printf("%d", к); } нач цел k, s k := 2 s := 8 нц пока s < 500 s := s + 20 k := k + 5 КЦ вывод k KOH
Ответ:,
9
Для передачи файла объёмом 512 Кбайт используется канал связи с пропускной способно-
стью 2 Мбит/с. За какое минимальное время (в секундах) может быть передан файл? В ответе
запишите только целое число, единицу измерения писать не нужно.
Ответ:.
10 Все 4-буквенные слова, составленные из букв А, Е, И, О, записаны в алфавитном порядке.
Вот начало списка:
1.АААА
2.АААЕ
З.АААИ
4.АААО
5. ААЕА
Запишите слово, стоящее на 248-м месте от начала списка.
Ответ:.
11
Даны рекурсивные алгоритмы F и G. Чему равно значение функции F(6)?
Бейсик Паскаль
FUNCTION F(n) function F(n: integer): integer;
IF n > 1 THEN begin
F = F(n - 1) + G(n - 1) if n > 1 then
ELSE F := F(n - 1) + G(n - 1)
F = n else
END IF F := n
END FUNCTION end;
FUNCTION G(n) function G(n: integer): integer;
IF n > 2 THEN begin
G = G(n - 1) + F(n) if n > 2 then
ELSE G := G(n - 1) + F(n)
G = n else
END IF G := n
END FUNCTION end;
Си Алгоритмический язык
int F(int n){ алг цел Г(цел п)
if (n > 1) нач
return F(n - 1)+G(n - 1); если п > 1 то
else знач := F(n - 1) + G(n - 1)
return n; иначе
} знач := п
int G(int n){ все
if (n > 2) кон
return G(n - 1) + F(n); алг цел С(цел п)
else нач
return n; если п > 2 то
} знач := G(n - 1) + F(n)
иначе
знач := п
все
кон
Ответ:__________________________________________________________________________________
12
На месте преступления были обнаружены четыре обрывка бумаги. Следствие установило,
что на них записаны фрагменты одного IP-адреса. Криминалисты обозначили эти фрагменты
буквами А, Б, В и Г. Восстановите 1Р-адрес.
В ответе укажите последовательность букв, обозначающих фрагменты, в порядке, соответ-
ствующем IP-адресу.
13 При регистрации в компьютерной системе каждому пользователю выдается пароль, состо-
ящий из 10 символов. Из соображений информационной безопасности каждый пароль должен
содержать хотя бы 1 десятичную цифру, а также как прописные, так и строчные латинские бук-
вы. В базе данных для хранения сведений о каждом пользователе отведено одинаковое и ми-
нимально возможное целое число байт. При этом используют посимвольное кодирование па-
ролей, все символы кодируют одинаковым и минимально возможным количеством бит. Кроме
собственно пароля, для каждого пользователя в системе хранятся дополнительные сведения,
для чего выделено целое число байт; это число одно и то же для всех пользователей.
Для хранения сведений о 15 пользователях потребовалось 600 байт. Сколько байт выделе-
но для хранения дополнительных сведений об одном пользователе? В ответе запишите только
целое число — количество байт.
Ответ:.
14
Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетча-
той плоскости:
вверх вниз влево вправо
При выполнении этих команд РОБОТ перемещается на одну клетку соответственно:
вверх Т, вниз Jr, влево вправо
Четыре команды проверяют истинность условия отсутствия стены у той клетки, где нахо-
дится РОБОТ:
сверху свободно снизу свободно слева свободно справа свободно
Цикл
ПОКА <условие>команда
Выполняется, пока условие истинно, иначе происходит переход на следующую строку.
Если РОБОТ начнёт движение в сторону стены, то он разру-
шится и программа прервется. Сколько клеток приведённого лабиринта соответствует требованию, что, выполнив предложенную ниже программу, РОБОТ остановится в той же клетке, с которой он начал дви- жение? НАЧАЛО ПОКА Ссверху свободней вправо ПОКА <справа свободно> вниз ПОКА <снизу свободно> влево ПОКА <слева свободно> вверх КОНЕЦ Ответ: .
15
16
На рисунке — схема дорог, связывающих города А,
Б, В, Г, Д, Е, Ж, И, К.
По каждой дороге можно двигаться только в одном
направлении, указанном стрелкой.
Сколько существует различных путей из города А
в город К?
Ответ:
Укажите через запятую в порядке возрастания все основания систем счисления, в которых
запись числа 32 оканчивается на 4.
Ответ: .
17 В языке запросов к поисковому серверу для обозначения логической операции «ИЛИ» ис-
пользуется символ «|», а для логической операции «И» — «&».В таблице приведено количество
страниц, которое находит поисковая система по каждому запросу.
Запрос Количество найденных страниц
Яблоки 7300
Яблоки|Сливы 14800
Яблоки & Сливы 1400
Какое количество страниц будет найдено по запросу: Сливы ?
Считается, что все запросы выполнялись практически одновременно, так что набор страниц,
содержащих все искомые слова, не изменялся за время выполнения запросов.
Ответ:.
18
19
На числовой прямой даны отрезки Р = [5, 13] и Q = [8, 19]. Укажите наибольшую возмож-
ную длину такого отрезка А, что формула -((г е Р) —> -(г е Q)) V -(г е А) верна при любых
значениях х.
Ответ:.
В программе используется целочисленный массив А с индексами от 0 до 9. Значения эле-
ментов массива равны 4; 7; 6; 4; 2; 3; 5; 10; 7; 8 соответственно, т. е. А[0] = 4; А[1] = 7 и т. д.
Определите значение переменной k после выполнения следующего фрагмента программы,
записанной ниже на разных языках программирования.
Бейсик Паскаль
к - 0 FOR i = 0 TO 9 k := 0; for i := 0 to 9 do
IF A(i) MOD 2 <> 0 THEN if A[i] mod 2 <> 0 then
к = к ENDIF NEXT i + A(i) k : = k + A [ i ] ;
Си Алгоритмический язык
к = 0; for (i = 0 ; i <= 9 ; i++) k := 0 нц для i от 0 до 9
if (A[i] % 2 ! = 0) если mod(A[i],2) О 0
к = к + A [ i ] ; ТО k := k + A[i] все КЦ
Ответ:__________________________________________________________________________________
20
Ниже на четырёх языках записан алгоритм.
Получив на вход число х, этот алгоритм печатает число М.
Укажите наименьшее число х, при вводе которого алгоритм печатает 255.
Бейсик Паскаль
DIM X, Y, L, М AS INTEGER INPUT X Y = X \ 10 L = X MOD 10 M = 0 WHILE L > 0 M = M * Y + 1 L = L - 1 WEND PRINT M var x, y, L, M: integer; begin readln(x); у := x div 10; L := x mod 10; M := 0; while L > 0 do begin M:=M*y+l; L := L - 1 end; write(M) end.
Си Алгоритмический язык
#include<stdio.h> void main() { int x, у, L, M; scanf("%d", &x); у = x / 10; L = x % 10; M = 0; while (L > 0) { M = M * у + 1; L = L - 1; ) printf("%d", M) ; } алг нач цел х, у, L, М ВВОД X у := div(х,10) L := mod(х,10) М := 0 нц пока L > 0 М := М * у + 1 L := L - 1 КЦ вывод М КОН
21
Определите, при каком наименьшем значении Ь в результате выполнения следующего ал-
горитма будет напечатано число 100 (для Вашего удобства алгоритм представлен на четырёх
языках):
Бейсик Паскаль
DIM А, В, Т, К AS INTEGER var a, b, t, k : integer;
А = 100 function F (x : integer) : integer;
INPUT В begin
К = 0 if x mod 2=0 then
FOR Т = А ТО В F := 1
К = К + F (Т) else
NEXT Т F := 0
PRINT К end; BEGIN
FUNCTION F (х) a := 100;
IF х MOD 2=0 THEN readln(b);
F = 1 k := 0;
ELSE for t := a to b do
F = 0 begin
END IF k := k + F(t)
END FUNCTION end; write(k) END.
Си Алгоритмический язык
int F(int x) алг
{ нач
if (x % 2 == 0) цел a, b, t, к
return 1; а := 100
else ввод Ь
return 0; к := 0
} нц для t от а до Ь
void main() к := к + F(t)
{ КЦ
int a, b, t, k; вывод к
a = 100; scanf("%d",&b) ; КОН
k = 0; алг цел F(цел х)
for (t = a; t <= b; t++) нач
{ если mod(x,2)=0
k = k + F(t); то
} знач ;= 1
printf("%d", k); иначе
} знач := 0 все КОН
Ответ:__________________________________________________________________________________
22 У исполнителя Удвоитель две команды, которым присвоены номера:
1. прибавь 3,
2. умножь на 2.
Первая из них увеличивает число на экране на 3, вторая удваивает его.
Программа для Удвоителя — это последовательность команд.
Сколько есть программ, которые число 2 преобразуют в число 26?
Ответ:
23
24
Сколько существует различных наборов значений логических переменных хр х2, ... ху х10,
которые удовлетворяют всем перечисленным ниже условиям?
= -х2) V(^3 = = О
(-х3 = -х4) V (^6 = = О
(^Х5 = ^Х6) V (_,х7 = -Х8) = о
(-х7 Е= -Х8) V(^9 = -х10) = О
В ответе не нужно перечислять все различные наборы значений хр х2,... хд, х10, при которых
выполнена данная система равенств. В качестве ответа вам нужно указать количество таких
наборов.
Ответ:.
Не забудьте перенести все ответы в бланк ответов № 1 в соответствии с инструкцией
по выполнению работы.
Часть 2
Для записи ответов на задания этой части (24—27) используйте БЛАНК ОТВЕТОВ № 2.
Запишите сначала номер задания (24, 25 и т. д.), а затем полное решение. Ответы записы-
вайте чётко и разборчиво.
Требовалось написать программу, которая вводит с клавиатуры натуральное число N
(N < 109) и выводит на экран сумму нечётных цифр числа. Если в числе нет нечётных цифр,
программа должна вывести на экран нуль. Программист торопился и написал программу не-
правильно.
Паскаль Бейсик
var N, d, sum: integer; begin readin(N); sum := 0; while N > 1 do begin d := N mod 10; if d mod 2 <> 0 then sum := sum + d; N := N div 10 end; writein(d) end. DIM N AS LONG INPUT N sum = 0 WHILE N > 1 d = N MOD 10 IF d MOD 2 <> 0 THEN sum = sum + d END IF N = N\10 WEND PRINT d END
Си Алгоритмический язык
#include<stdio.h> int main() { long int N; int d, sum; scanf("%ld", &N) ; sum = 0; while (N > 1) { d = N % 10; if (d % 2 != 0) sum = sum + d; N = N/10; } printf("%d", d); } алг нач цел N, sum, d ввод N sum := 0 нц пока N > 1 d := mod(N,10) если mod(d,2) <> 0 to sum := sum + d все N := div(N, 10) КЦ вывод d KOH
Выполните следующие действия:
1. Напишите, что выведет программа при вводе числа 234.
2. Приведите пример такого числа, при котором программа работает верно.
3. Укажите все ошибки в программе и исправьте их. Для этого для каждой ошибки:
выпишите строку, которая написана неправильно и приведите правильный вариант
строки.
25
Дан вещественный массив из 40 элементов. Элементы массива могут принимать произволь-
ные значения. Опишите на русском языке или на одном из языков программирования алго-
ритм, который находит и выводит минимальный положительный элемент массива или сообще-
ние, что такого элемента нет.
Исходные данные объявлены так, как показано ниже. Запрещается использовать перемен-
ные, не описанные ниже, но разрешается не использовать часть из них.
Паскаль Бейсик
const N = 40; var a: array [1..N] of real; i, j: integer; min: real; begin for i := 1 to N do readln(a[i]); N = 40 DIM A(N) AS REAL DIM I, J AS INTEGER DIM MIN AS REAL FOR I = 1 TO N INPUT A(I) NEXT I
end. END
СИ Алгоритмический язык
♦include <stdio.h> ♦define N 40 void main(void) {float a[N]; int i, j; float min; for (i = 0; i < N; i++) scanf("%f", &a[i]); алг нач цел N = 40 вещтаб а[1:N] цел i, j вещ MIN нц для i от 1 до N ввод a[i] КЦ
} кон
Русский (естественный) язык
Объявляем массив А из 40 элементов. Объявляем целочисленные переменные I, J, и вещественную переменную MIN. В цикле от 1 до 40 вводим элементы массива А с 1-го по 40-й.
В качестве ответа вам необходимо привести фрагмент программы (или описание алгоритма
на естественном языке), который должен находиться на месте многоточия. Вы можете запи-
сать решение также на другом языке программирования (укажите название и используемую
версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом
случае вы должны использовать те же самые исходные данные и переменные, какие были пред-
ложены в условии (например, в образце, записанном на естественном языке).
26
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней.
Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу
1 камень или добавить в кучу 10 камней. Например, имея кучу из 8 камней, за один ход можно
получить кучу из 9 или 18 камней. У каждого игрока, чтобы делать ходы, есть неограниченное
количество камней. Игра завершается в тот момент, когда количество камней в куче становит-
ся не менее 28. Победителем считается игрок, сделавший последний ход, то есть первым полу-
чивший кучу, в которой будет 28 или больше камней.
В начальный момент в куче было S камней, 1 S < 27.
Говорят, что игрок имеет выигрышную стратегию, если он может выиграть при любых хо-
дах противника. Описать стратегию игрока — значит описать, какой ход он должен сделать
в любой ситуации, которая ему может встретиться при различной игре противника.
Выполните следующие задания. Во всех случаях обосновывайте свой ответ.
1. а). При каких значениях числа S Петя может выиграть первым ходом? Укажите все такие
значения.
б). Укажите такое значение S, при котором Петя не может выиграть за один ход, но при лю-
бом ходе Пети Ваня может выиграть своим первым ходом. Опишите выигрышную стратегию
Вани.
2. Укажите два значения S, при которых у Пети есть выигрышная стратегия, причём Петя
не может выиграть за один ход, но может выиграть своим вторым ходом независимо от того,
как будет ходить Ваня. Для указанных значений S опишите выигрышную стратегию Пети.
3. Укажите такое значение S, при котором у Вани есть выигрышная стратегия, позволя-
ющая ему выиграть первым или вторым ходом при любой игре Пети, но при этом у Вани нет
стратегии, которая позволит ему гарантированно выиграть первым ходом. Для указанного
значения S опишите выигрышную стратегию Вани. Постройте дерево всех партий, возможных
при этой выигрышной стратегии Вани (в виде рисунка или таблицы). На рёбрах дерева указы-
вайте, кто делает ход, в узлах — количество камней в куче.
27 На вход программе подаётся: в первой строке — число N (5 < N < 109).
В каждой из последующих N строк — по одному элементу последовательности — натураль-
ные числа, не превышающее 109.
Напишите эффективную, в том числе и по используемой памяти, программу (укажите ис-
пользуемую версию языка программирования, например, Borland Pascal 7.0), которая выво-
дит на экран максимальную сумму двух элементов этой последовательности, номера которых
различаются не меньше чем на 5.
Пример входных данных:
8
3
5
4
7
8
3
2
9
Пример выходных /данных:
14
ВАРИАНТ 3
Часть 1
Ответами к заданиям 1—23 являются число, последовательность букв или цифр, кото-
рые следует записать в БЛАНК ОТВЕТОВ № 1 справа от номера соответствующего зада-
ния, начиная с первой клеточки, без пробелов, запятых и других дополнительных симво-
лов. Каждый символ пишите в отдельной клеточке в соответствии с приведёнными в бланке
образцами.
1
Сколько единиц содержится в двоичной записи восьмеричного числа 2417g?
Ответ:____________________________________________________________________________
2
Логическая функция F задаётся выражением у V((^) Дх).
На рисунке приведён фрагмент таблицы истинности функции F, содержащий все наборы
аргументов, при которых функция F истинна.
Определите, какому столбцу таблицы истинности функции F соответствует каждая из пере-
менных х, у, z.
Перем. 1 Перем. 2 Перем. 3 Функция
??? ??? ??? F
0 0 1 1
0 1 1 1
1 0 0 1
1 0 1 1
1 1 1 1
В ответе напишите буквы х, у, г в том порядке, в котором идут соответствующие им столбцы
(сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая второ-
му столбцу; затем — буква, соответствующая третьему столбцу). Буквы в ответе пишите под-
ряд, никаких разделителей между буквами ставить не нужно.
Пример. Пусть задано выражение х -> у, зависящее от двух переменных х и у, и таблица
истинности:
Перем. 1 Перем. 2 Функция
??? ??? F
0 0 1
0 1 0
1 0 1
1 1 1
Тогда первому столбцу соответствует переменная у, а второму столбцу соответствует пере-
менная х. В ответе нужно написать: ух.
Ответ: ___ __________________
3
На рисунке справа схема дорог Н-ского района изображена в виде графа, в таблице содер-
жатся сведения о длинах этих дорог (в километрах).
ктов в таблице никак не связана с буквенными обозначениями на графе.
Определите, какова длина дороги и пункта К в пункт Е.
В ответе запишите целое число — так, как оно указано в таблице.
Ответ: .
LZ
Для групповых операций с файлами используются маски имён файлов. Маска представ-
ляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов,
в которой также могут встречаться следующие символы.
Символ «?» (вопросительный знак) означает ровно один произвольный символ.
Символ «*» (звёздочка) означает любую последовательность символов произвольной дли-
ны, в том числе «*» может задавать и пустую последовательность.
В каталоге находятся шесть файлов:
ask. с
kasko.срр
kraska.doc
nebraska.docx
mask.pic
laska.dpr
Ниже представлено восемь масок. Сколько из них таких, которым соответствует ровно
3 файла из данного каталога?
*?sk*.???* *a*k*.*c* *ask?.*c* *ask*.??c*
*a??a*.??c* *.??* *ka*.?*? *sk*.d*
Ответ:__________________________________________________________________________________
5 Для кодирования некоторой последовательности, состоящей из букв А, Б, В, Г и Д, исполь-
зуется неравномерный двоичный код, позволяющий однозначно декодировать полученную
двоичную последовательность.
Вот этот код: А-110, Б-10, В-01, Г-111.
Каким кодовым словом должна кодироваться буква Д?
Если таких вариантов несколько, укажите самый короткий.
Ответ:.
6
У исполнителя Удвоитель две команды, которым присвоены номера:
1. умножь на 2,
2. прибавь 3.
Первая из них удваивает число на экране, вторая — увеличивает его на 3.
Запишите порядок команд в программе преобразования числа 4 в число 47, содержащей
не более 5 команд, указывая лишь номера команд. {Например, 21211 — это программа
прибавь 3
умножь на 2
прибавь 3
умножь на 2
умножь на 2,
которая преобразует число 1 в 44.)
(Если таких программ более одной, то запишите любую из них.)
Ответ:.
7
Дан фрагмент электронной таблицы.
А В С D
1 4 5 =$А2+В$1
2 2 1 =А1+В2
3 7 6 3
Чему станет равным значение ячейки D2, если в неё скопировать формулу из ячейки С1?
Примечание: знак $ обозначает абсолютную адресацию.
Ответ:_____________________________________________________________________________
8
Определите, что будет напечатано в результате выполнения следующего фрагмента про-
граммы:
Бейсик Паскаль
DIM k, s AS INTEGER к = 1 s = 8 WHILE s < 208 s = s + 20 к = к * 2 WEND PRINT к var k, s : integer; begin к := 1; s : = 8; while s < 208 do begin s : = s + 20; к : = к * 2 end; write(k); end.
Си Алгоритмический язык
{ int к, s; к = 1; s = 8; while (s < 208) { s = s + 20; к = к * 2; } printf("%d", k) ; } нач цел k, s k 1 s := 8 нц пока s < 208 s := s + 20 k := k * 2 КЦ вывод k KOH
Ответ:__________________________________________________________________________________
Какой минимальный объём памяти (в Кбайт) нужно зарезервировать, чтобы можно было
сохранить любое растровое изображение размером 64x256 пикселей при условии, что в изо-
бражении могут использоваться 4 различных цвета? В ответе запишите только целое число,
единицу измерения писать не нужно.
Ответ: ..
10 Петя и Вася передают друг другу сообщения, используя трёхцветный фонарик. На фона-
рике имеется три кнопки, соответствующие цвету, которым будет светить фонарик (красный,
зелёный и синий). Две кнопки одновременно нажать нельзя. Для передачи сообщения мальчи-
ки последовательно нажимают пять раз одну из кнопок. Сколько различных сообщений могут
передать мальчики?
Ответ:.
11 Алгоритм вычисления значения функции F(n), где п — натуральное число, задан следую-
щими соотношениями:
F(n) = F(n - 1) + п - 2, при п > 1
F(l) = 2
Чему равно значение функции F( 7)?
В ответе запишите только натуральное число.
Ответ:.
12
На месте преступления были обнаружены четыре обрывка бумаги. Следствие установило,
что на них записаны фрагменты одного IP-адреса. Криминалисты обозначили эти фрагменты
буквами А, Б, В и Г. Восстановите 1Р-адрес.
В ответе укажите последовательность букв, обозначающих фрагменты, в порядке, соответ-
ствующем 1Р-адресу.
.25 6.8 202 4.24
А В С D
Ответ:,
13 Для передачи секретного сообщения используется код, состоящий из десятичных цифр.
При этом все цифры кодируются одним и тем же (минимально возможным) количеством бит.
Определите информационный объём сообщения (в байтах) длиной в 200 символов.
Ответ:.
14
Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетча-
той плоскости включает 4 команды-приказа и 4 команды проверки условия.
Команды-приказы:
вверх вниз влево вправо
При выполнении любой из этих команд РОБОТ перемещается на одйу клетку соответствен-
но: вверх ?, вниз Ф, влево , вправо —
Если РОБОТ начнёт движение в сторону находящейся рядом с ним стены, то он разрушится
и программа прервётся.
Другие четыре команды проверяют истинность условия отсутствия стены у каждой сторо-
ны той клетки, где находится РОБОТ:
сверху свободно снизу свободно слева свободно справа свободно
Цикл
ПОКА <условие>
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ <условие>
ТО команда!
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда! (если условие истинно) или команда2 (если условие ложно).
Сколько клеток лабиринта соответствует требованию, что, начав движение в ней и выполнив
предложенную программу, РОБОТ уцелеет и остановится в закрашенной клетке (клетка F6)?
НАЧАЛО
ПОКА <справа свободно ИЛИ снизу свободно
ЕСЛИ <справа свободно»
ТО вправо
ИНАЧЕ вниз
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Ответ:__________________________________________________________________________________
На рисунке — схема дорог, связывающих города
А, Б, В, Г, Д, Е, Ж, И, К.
По каждой дороге можно двигаться только в од-
ном направлении, указанном стрелкой.
Сколько существует различных путей из города А
в город К?
Ответ:________________________________________
16
17
Укажите наименьшее основание системы счисления, в которой запись десятичного числа
70 имеет ровно 3 значащих разряда.
Ответ:.
В языке запросов к поисковому серверу для обозначения логической операции «ИЛИ» ис-
пользуется символ «|», а для логической операции «И» — «&». В таблице приведено количество
страниц, которое находит поисковая система по каждому запросу.
Запрос Количество найденных страниц
Колёса 8700
Шины 4300
Колёса & Шины 1400
Какое количество страниц будет найдено по запросу: Колёса | Шины ?
Считается, что все запросы выполнялись практически одновременно, так что набор страниц,
содержащих все искомые слова, не изменялся за время выполнения запросов.
Ответ:.
18
19
На числовой прямой даны отрезки Р = [5, 13] и Q = [8, 19]. Укажите наименьшую возмож-
ную длину такого отрезка А, что формула ((х е Р) Л Н* е А)) -» ((х е Q) Л ~Ах е А)) верна при
любых значениях х.
Ответ:.
В программе используется целочисленный массив А с индексами от 0 до 9. Значения эле-
ментов массива равны 4; 5; 4; 7; 6; 3; 9; 11; 7; 8 соответственно, т. е. А[0] = 4; А[1] = 5 и т. д.
Определите значение переменной k после выполнения следующего фрагмента программы,
записанной ниже на разных языках программирования.
Бейсик Паскаль
к = 0 FOR i = 0 ТО 9 IF А(0) < A(i) THEN к = к + 1 t = A(i) A(i) = A(0) A(0) = t ENDIF NEXT i к := 0; for i := 0 to 9 do if A[0] < A[i] then begin к := к + 1; t := A[i]; A [i] := A[0] ; A[0] := t end;
Си Алгоритмический язык
к = 0; for (i = 0 ; i <= 9 ; i++) if (A[0] < A[i]) { к = к + 1; t = A[i]; A [ i ] = A [ 0 ] ; A[OJ = t; } k := 0 нц для i от 0 до 9 если А[0] < А[i] то k := к + 1 t := A[i] A[i] := А[0] А[0] := t все КЦ
Ответ:.
20 Ниже на четырёх языках записан алгоритм. Получив на вход число х, этот алгоритм пе-
чатает два числа L и М. Укажите наименьшее из таких чисел х, при вводе которых алгоритм
печатает сначала 3, а потом 7.
Бейсик Паскаль
DIM X, L, М AS INTEGER INPUT X L = 0 M = 0 WHILE X > 0 L = L + 1 IF M < (X MOD 10) THEN M = X MOD 10 ENDIF X = X \ 10 WEND PRINT L PRINT M var x, L, M: integer; begin readin(x); L := 0; M := 0; while x > 0 do begin L := L + 1; if M < (x mod 10) then M := x mod 10; x := x div 10 end; writein(L); write(M) end.
Си Алгоритмический язык
#include<stdio.h> алг
void main() нач
( цел х, L, М
int x, L, M; ВВОД X
scanf("%d", &x) ; L := 0
L = 0; М := 0
M = 0; нц пока х > 0
while (x > 0){ L := L + 1
L = L + 1; если М < mod(х,10)
if (M < x % 10) ТО
M = x % 10; М := mod(х,10)
x = x / 10; все
} х := div(х,10)
printf("%d\n%d", L, M); кц
) вывод L, НС, М
кон
—
Ответ:__________________________________________________________________________________
21
Ниже на четырёх языках представлен алгоритм. Напишите в ответе наименьшее значение
входной переменной k, при котором программа выдаёт тот же ответ, что и при входном значе-
нии k = 22.
Бейсик Паскаль
DIM К, A AS INTEGER INPUT К А = 1 WHILE F(A) < G(K) A = A + 1 WEND PRINT A FUNCTION F (n) F = n * n - 5 END FUNCTION FUNCTION G (n) G = 3 * n + 8 END FUNCTION var k, a : integer; function f (n:integer):integer; begin f : = n * n - 5 end; function g(n:integer):integer; begin g : = 3 * n + 8 end; BEGIN readln(k); a : = 1 ; while f(a) < g(k) do a : = a + 1 ; write(a) END.
Си Алгоритмический язык
♦include <stdio.h> long f(long n) { return n * n - 5; } long g(long n) ( return 3 * n + 8; } void main()( long k, a; scanf("%ld", &k); a = 1; while (f (a) < g(k)) a = a + 1; printf("%ld", a); } алг нач цел к, а ввод к а : = 1 нц пока F(а) < G(к) а : = а + 1 КЦ вывод а КОН алг цел F(цел п) нач знач := п * п - 5 КОН алг цел G (цел п) нач знач := 3 * п + 8 КОН
22 У исполнителя Утроитель две команды, которым присвоены номера:
1. прибавь 2,
2. умножь на 3.
Первая из них увеличивает число на экране на 2, вторая — утраивает его.
Программа для Утроителя — это последовательность команд.
Сколько есть программ, которые число 2 преобразуют в число 28?
Ответ:_________________________________________________________________________
23
24
Сколько существует различных наборов значений логических переменных х, х , ... х9, х10,
которые удовлетворяют всем перечисленным ниже условиям?
-(^xt = x2) \/(^х3 = х4) = 1
-(^х3 = х4) V(^5 = x6) = 1
= х6) V (~х7 = х8) = 1
-ex7=x8)v(-x9=x10)=i
В ответе не нужно перечислять все различные наборы значений хр х2,... х^ х10, при которых
выполнена данная система равенств. В качестве ответа вам нужно указать количество таких
наборов.
Ответ:.
Не забудьте перенести все ответы в бланк ответов № 1 в соответствии с инструкцией
по выполнению работы.
Часть 2
Для записи ответов на задания этой части (24—27) используйте БЛАНК ОТВЕТОВ № 2.
Запишите сначала номер задания (24, 25 и т. д.), а затем полное решение. Ответы записы-
вайте чётко и разборчиво.
Требовалось написать программу, которая вводит с клавиатуры натуральное число N
(N < 109) и выводит на экран сумму цифр числа. Программист торопился и написал программу
неправильно.
Паскаль Бейсик
var N, s: integer; begin readin (N); s : = 0 ; while N > 0 do begin N := N div 10; s := s + N mod 10 end; writein(s) end. DIM N AS LONG INPUT N S = 0 WHILE N > 0 N = N \ 10 s = s + N MOD 10 WEND PRINT s END
Си Алгоритмический язык
#include<stdio.h> int main() { long int N; int s; scant("%ld", &N); s = 0 ; while (N > 0) { N = N /10; s=s+N%10; } printf("%d”, s); } алг нач цел N, s ввод N s := 0 нц пока N > 0 N := div(N, 10) з : = s + mod(N,10) КЦ ВЫВОД S кон
Выполните следующие действия:
1. Напишите, что выведет программа при вводе числа 527.
2. Приведите пример такого числа, при котором программа работает верно.
3. Укажите все ошибки в программе и исправьте их. Для этого для каждой ошибки:
выпишите строку, которая написана неправильно и приведите правильный вариант
строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать
свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно за-
трагивать только строку, в которой находится ошибка.
25 Дан целочисленный массив из 40 элементов.
Элементы массива могут принимать произвольные значения. Опишите на русском языке
или на одном из языков программирования алгоритм, который находит и выводит значение
второго максимума (элемента, который в отсортированном по невозрастанию массиве стоял бы
вторым).
Исходные данные объявлены так, как показано ниже. Запрещается использовать перемен-
ные, не описанные ниже, но разрешается не использовать часть из них.
Паскаль Бейсик
const N = 40; var a: array [1..N] of integer; i, k, max, max2: integer; begin for i:=l to N do readin (a[i]); end. N = 40 DIM A(N) AS INTEGER DIM I, K, MAX, MAX2 AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I END
СИ Алгоритмический язык
♦include <stdio.h> ♦define N 40 void main(void) {int a[N]; int i, k, max, max2; for (i = 0; i < N; i++) scanf("%d", &a[i] ) ; } алг нач цел N = 40 целтаб а [ 1: N ] цел i, k, MAX, МАХ2 нц для i от 1 до N ввод а[i] кц кон
Русский (естественный) язык
Объявляем массив А из 40 элементов. Объявляем целочисленные переменные I, К, MAX, МАХ2. В цикле от 1 до 40 вводим элементы массива А с 1-го по 40-й.
В качестве ответа вам необходимо привести фрагмент программы (или описание алгоритма
на естественном языке), который должен находиться на месте многоточия. Вы можете запи-
сать решение также на другом языке программирования (укажите название и используемую
версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом
случае вы должны использовать те же самые исходные данные и переменные, какие были пред-
ложены в условии (например, в образце, записанном на естественном языке).
26
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней.
Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу
один или два камня или увеличить количество камней в куче в два раза. Например, имея кучу
из 15 камней, за один ход можно получить кучу из 16, 17 или 30 камней. У каждого игрока,
чтобы делать ходы, есть неограниченное количество камней.
Игра завершается в тот момент, когда количество камней в куче становится не менее 27.
Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу,
в которой будет 27 или больше камней.
В начальный момент в куче было S камней, 1 S 26.
Говорят, что игрок имеет выигрышную стратегию, если он может выиграть при любых хо-
дах противника. Описать стратегию игрока — значит описать, какой ход он должен сделать
в любой ситуации, которая ему может встретиться при различной игре противника.
Выполните следующие задания. Во всех случаях обосновывайте свой ответ.
1. а. Укажите все такие значения числа S, при которых Петя может выиграть в один ход.
Обоснуйте, что найдены все нужные значения S, и укажите выигрывающий ход для каждого
указанного значения S.
б. Укажите такое значение S, при котором Петя не может выиграть за один ход, но при лю-
бом ходе Пети Ваня может выиграть своим первым ходом. Опишите выигрышную стратегию
Вани.
2. Укажите два значения S, при которых у Пети есть выигрышная стратегия, причём
(а) Петя не может выиграть за один ход и (б) Петя может выиграть своим вторым ходом неза-
висимо от того, как будет ходить Ваня. Для каждого указанного значения S опишите выигрыш-
ную стратегию Пети.
3. Укажите такое значение S, при котором:
— у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым
ходом при любой игре Пети, и
— у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
Для указанного значения S опишите выигрышную стратегию Вани. Постройте дерево всех
партий, возможных при этой выигрышной стратегии Вани (в виде рисунка или таблицы).
На рёбрах дерева указывайте, кто делает ход, в узлах — количество камней в куче.
27 На вход программе подаётся: в первой строке — число N (1 < N < 109).
В каждой из последующих N строк — по одному элементу последовательности — целые
числа, не превышающее по модулю 10 000.
Напишите эффективную, в том числе и по используемой памяти, программу (укажите ис-
пользуемую версию языка программирования, например, Borland Pascal 7.0), которая выво-
дит на экран минимальное произведение двух элементов этой последовательности.
Пример входных данных:
8
3
4
5
-7
-8
3
2
9
Пример выходных данных:
-72
ВАРИАНТ 4
Часть 1
Ответами к заданиям 1—23 являются число, последовательность букв или цифр, кото-
рые следует записать в БЛАНК ОТВЕТОВ № 1 справа от номера соответствующего зада-
ния, начиная с первой клеточки, без пробелов, запятых и других дополнительных симво-
лов. Каждый символ пишите в отдельной клеточке в соответствии с приведёнными в бланке
образцами.
1
Сколько значащих нулей в двоичной записи числа 188?
Ответ:__________________________________________________________________
2
Логическая функция F задаётся выражением (у /\х)\/(у /\^г).
На рисунке приведён фрагмент таблицы истинности функции F, содержащий все наборы
аргументов, при которых функция F истинна.
Определите, какому столбцу таблицы истинности функции F соответствует каждая из пере-
менных х, у, г.
Перем.1 Перем.2 Перем. 3 Функция
??? ??? ??? F
1 0 0 1
1 1 0 1
1 1 1 1
В ответе напишите буквы х, у, г в том порядке, в котором идут соответствующие им столбцы
(сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая второ-
му столбцу; затем — буква, соответствующая третьему столбцу). Буквы в ответе пишите под-
ряд, никаких разделителей между буквами ставить не нужно.
Пример. Пусть задано выражение х -> у, зависящее от двух переменных х и у, и таблица
истинности:
Перем. 1 Перем. 2 Функция
??? ??? F
0 0 1
0 1 0
1 0 1
1 1 1
Тогда первому столбцу соответствует переменная у, а второму столбцу — переменная х.
В ответе нужно написать: ух.
Ответ:
3
На рисунке справа схема дорог Н-ского района изображена в виде графа, в таблице содер-
жатся сведения о длинах этих дорог (в километрах).
Так как таблицу и схему рисовали независимо друг от друга, то нумерация населённых пун-
ктов в таблице никак не связана с буквенными обозначениями на графе. Определите, какова
длина дороги и пункта Г в пункт Е. В ответе запишите целое число — так, как оно указано
в таблице.
Ответ:.
4 Дан фрагмент базы данных, содержащий информацию о родственных отношениях. Опре-
делите на основании приведённых данных ID племянника Гано И.Е. (Племянник — сын брата
или сестры).
Таблица 1
ID Фамилия И.О. Пол
1453 Дени К.Д. •иг /IV
2185 Ирта О.Б. •щ1 /IV
2605 Гано И.Е. /IV
3474 Ивенко Д.Я. м
4218 Бабенко А.Е. м
5363 Марченко Е.Е. м
5771 Арне А.Е. *\тл /Iv
7148 Камо Е.А. м
7814 Исава Г. А. *112* /IV
8208 Сорт А.К. птл /IV
...
Ответ:
Таблица 2
1В_Родителя 1В_Ребёнка
5363 4218
2185 4218
7148 5363
1453 5363
3474 1453
7814 1453
7148 2605
1453 2605
2605 8208
5363 5771
...
5 Для кодирования некоторой последовательности, состоящей из букв А, Б, В, Г и Д, исполь-
зуется неравномерный двоичный код, позволяющий однозначно декодировать полученную
двоичную последовательность. Вот этот код: А-110, Б-0, В-111, Г-100.
Каким кодовым словом должна кодироваться буква Д? Если таких вариантов несколько,
укажите самый короткий.
Ответ:.
6
В некоторой информационной системе информация кодируется двоичными шестиразряд-
ными словами. При передаче данных возможны их искажения, поэтому в конец каждого сло-
ва добавляется седьмой (контрольный) разряд таким образом, чтобы сумма разрядов нового
слова, считая контрольный, была чётной. Например, к слову 101101 справа будет добавлен 0,
а к слову 010110 — 1.
После приёма слова производится его обработка. При этом проверяется сумма его разря-
дов, включая контрольный. Если она нечётна, это означает, что при передаче этого слова про-
изошёл сбой, и оно автоматически заменяется на зарезервированное слово 0000000. Если она
чётна, это означает, что сбоя не было или сбоев было больше одного. В этом случае принятое
слово не изменяется.
Приведём фрагмент кодовой таблицы, используемый в данной задаче:
Буква Кодовое слово Примечание
X 000000 сбой
А 100001
В 011010
С 110010
D 110011
Исходное сообщение АВС было передано в виде:
1000010 0110101 1100101
И затем было принято в виде:
1100110 0110101 1100100.
Как будет выглядеть принятое сообщение после обработки? В ответе запишите последова-
тельность букв без пробелов и знаков препинания.
Ответ:.
Дан фрагмент электронной таблицы.
А В С D
1 3 5 4
2 =D1+B1 1 2
3 =С$2+$СЗ б 7
Чему станет равным значение ячейки А2, если в неё скопировать формулу из ячейки ВЗ?
Примечание: знак $ обозначает абсолютную адресацию.
Ответ:__________________________________________________________________________
8
Определите, что будет напечатано в результате выполнения следующего фрагмента про-
граммы:
Бейсик Паскаль
DIM k, s AS INTEGER s = 0 FOR к = 3 TO 8 s = s + к NEXT к PRINT s var k, s : integer; begin s : = 0 ; for к := 3 to 8 do s := s + k; write (s) ; end.
Си Алгоритмический язык
{ нач
int k, s; цел k, s
s = 0; s := 0
for(k=3 ; к<=8 ; к++) нц для к от 3 до 8
s = s + к; s : = s + к
printf("%d", s); КЦ
} ВЫВОД S
КОН
—
Ответ:.
9
Производится звукозапись музыкального фрагмента в формате квадро (четырёхканальная
запись) с частотой дискретизации 16 кГц и 24-битным разрешением. Результаты записывают-
ся в файл, сжатие данных не производится; размер полученного файла 60 Мбайт. Затем про-
изводится повторная запись этого же фрагмента в формате стерео (двухканальная запись) с
частотой дискретизации 64 кГц и 16-битным разрешением. Сжатие данных не производилось.
Укажите размер файла в Мбайт, полученного при повторной записи. В ответе запишите только
целое число, единицу измерения писать не нужно.
Ответ:.
10 Для кодирования 38-ми различных сообщений используют флажки трёх видов (красный,
зелёный и синий). Сколько флажков нужно использовать для одного сообщения (каждое со-
общение кодируется одинаковым числом флажков)?
Ответ:.
11 Алгоритм вычисления значения функции F(n), где п — натуральное число, задан следую-
щими соотношениями:
F(n) = F(n - 1) + F(n/2), при n > 1 и п кратно 2
F(n) = F(n - 1) + 1, при п > 1 и п не кратно 2
F(l) = 1
Чему равно значение функции Г(8)?
В ответе запишите только натуральное число.
Ответ:.
12 В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, ка-
кая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой
сети. Обычно маска записывается по тем же правилам, что и IP-адрес. Адрес сети получается
в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.
По заданным IP-адресу узла и маске определите адрес сети.
IP-адрес узла: 209.135.205.15
Маска: 255.255.248.0
При записи ответа выберите из приведённых в таблице чисел четыре элемента IP-адреса
и запишите в нужном порядке соответствующие им буквы. Точки писать не нужно.
А В С D Е F G Н
0 15 135 200 205 209 248 255
Пример.
Пусть искомый IP-адрес 192.168.128.0, и дана таблица
А В С D Е F G Н
128 168 255 8 127 0 17 192
В этом случае правильный ответ будет записан в виде: HBAF
Ответ:,
13 Для регистрации на сайте онлайн-магазина пользователю предлагается придумать пароль,
состоящий из 6 символов. Правилами безопасности сайта разрешается использовать только
символы латинского алфавита (строчные и прописные). При этом используется посимвольное
кодирование и в памяти сервера для кодирования каждого символа используется минимально
возможное и одинаково целое количество бит. А для хранения всего пароля используется ми-
нимально возможное целое количество байт. Какое количество информации (в байтах) требует-
ся для хранения паролей 80 пользователей?
Ответ:.
14
15
Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетча-
той плоскости включает 4 команды-приказа и 4 команды проверки условия.
Команды-приказы:
вверх вниз влево вправо
При выполнении любой из этих команд РОБОТ перемещается на одну клетку соответствен-
но: вверх ?, вниз >1, влево , вправо —
Если РОБОТ начнёт движение в сторону находящейся рядом с ним стены, то он разрушится
и программа прервётся.
Другие четыре команды проверяют истинность условия отсутствия стены у каждой сторо-
ны той клетки, где находится РОБОТ:
сверху свободно снизу свободно слева свободно справа свободно
Цикл
ПОКА <условие>
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
Сколько клеток лабиринта соответствует требованию, что, начав движение в ней и выпол-
нив предложенную программу, РОБОТ уцелеет и остановится в закрашенной клетке (клетка
F6)?
НАЧАЛО
ПОКА <справа свободно ИЛИ снизу свободно>
ПОКА <справа свободно
вправо
КОНЕЦ ПОКА
ПОКА <снизу свободно>
вниз
КОНЕЦ ПОКА
КОНЕЦ ПОКА
КОНЕЦ
Ответ:
На рисунке — схема дорог, связывающих
города А, Б, В, Г, Д, Е, Ж, 3, И, К.
По каждой дороге можно двигаться толь-
ко в одном направлении, указанном стрел-
кой.
Сколько существует различных путей из
города А в город К?
16
17
Укажите через запятую в порядке возрастания все десятичные числа, не превосходящие 23,
запись которых в двоичной системе счисления оканчивается на 101.
Ответ:.
В языке запросов к поисковому серверу для обозначения логической операции «ИЛИ» ис-
пользуется символ «|», а для логической операции «И» — «&». В таблице приведено количество
страниц, которое находит поисковая система по каждому запросу.
Запрос Количество найденных страниц
(Клавиатура | Мышь) & Джойстик 11700
Клавиатура & Джойстик 7300
Мышь & Джойстик 5900
Какое количество страниц будет найдено по запросу: Клавиатура & Мышь & Джойстик ?
Считается, что все запросы выполнялись практически одновременно, так что набор страниц,
содержащих все искомые слова, не изменялся за время выполнения запросов.
Ответ:.
18 Обозначим через т&п поразрядную конъюнкцию неотрицательных целых чисел тип. Так,
например, 14&5 = 11102 & 01012 = 01002 = 4.
Для какого наименьшего неотрицательного целого числа А формула
(х&45 0 Дх&А = 0) —> х&ЗЗ 0
тождественно истинна (т. е. принимает значение 1 при любом неотрицательном целом зна-
чении переменной х)?
Ответ:.
19
В программе используется целочисленный массив А с индексами от 0 до 9. Значения эле-
ментов массива равны 4; 5; 4; 7; 6; 3; 9; 11; 7; 8 соответственно, т. е. А[0] = 4; А[1] = 5 и т. д.
Определите значение переменной k после выполнения следующего фрагмента программы,
записанной ниже на разных языках программирования.
Бейсик Паскаль
к = 0 FOR i = 0 ТО 8 IF A(i) > A{i+1) THEN к = к + 1 t = A(i) A(i) = A(i+1) A(i+1) = t ENDIF NEXT i к := 0; for i := 0 to 8 do if Afi] > Afi-I-1] then begin к := к + 1; t := Afi]; Afi] := A[i+1]; A[i+1] := t end;
Си Алгоритмический язык
к = 0; for (i = 0 ; i <= 8 ; i++) if {A[i] > A[i+1]) { к = к + 1; t = Afi]; Afi] = A[i+1]; A[i+1] = t; } k := 0 нц для i от 0 до 8 если Afi] > А[i +1] то к := к + 1 t := Afi] Afi] := A[i+1] A[i+1] := t все КЦ
Ответ:__________________________________________________________________________________
20
21
Ниже на четырёх языках записан алгоритм. Получив на вход число х, этот алгоритм пе-
чатает два числа: L и М. Укажите наибольшее из таких чисел х, при вводе которых алгоритм
печатает сначала 4, а потом 13.
Бейсик Паскаль
DIM X, М, L AS INTEGER INPUT X М = 0 L = 10 WHILE X > 0 M = M + X MOD 10 IF X MOD 10 < L THEN L = X MOD 10 ENDIF X = X \ 10 WEND PRINT L PRINT M var x, M, L: integer; begin readln (x); M := 0; L := 10; while x > 0 do begin M := M + x mod 10; if x mod 10 < L then L := x mod 10; x := x div 10 end; writein(L) ; write(M) end.
Си Алгоритмический язык
#include<stdio.h> void main() { int x, M, L; scanf("%d", &x); M = 0; L = 10; while (x > 0)( M = M + x % 10; if (x % 10 < L) L = x % 10; x = x /'10; } printf ("%d\n%d", L, M); } алг нач цел х, М, L ВВОД X М := 0 L := 10 нц пока х > 0 М : = М + mod(х,10) если mod(х,10) < L ТО L := mod(х,10) все х := div(х,10) КЦ вывод L, нс, М кон
Ответ:,
Определите, при каком наибольшем значении b в результате выполнения следующего алго-
ритма будет напечатано число 50 (для Вашего удобства алгоритм представлен на четырёх язы-
ках):
Бейсик Паскаль
DIM А, В, Т, К AS INTEGER А = 100 INPUT В К = 0 FOR Т = А ТО В К = К + F(T) NEXT Т PRINT К FUNCTION F (х) IF х MOD 10 < 5 THEN F = 1 ELSE F = 0 END IF END FUNCTION var a, b, t, k : integer; function F(x: integer): integer; begin if x mod 10 < 5 then F := 1 else F := 0 end; BEGIN a := 100; readln (b); k := 0; for t := a to b do begin k := k + F(t) end; write(k) END.
Си Алгоритмический язык
int F (int х) if (х % 10 < 5) return 1; else return 0; } void main() { int a, b, t, k; a = 100; scanf("%d",&b); k = 0; for (t = a; t <= b; t++) { k = k + F (t) ; } printf("%d", k); ) алг нач цел а, b, t, к а := 100 ввод b к := 0 нц для t от а до b к := к + F(t) КЦ вывод к КОН алг цел F(цел х) нач если mod(х,10) < 5 то знач := 1 иначе знач := 0 все КОН
Ответ:__________________________________________________________________________________
22 У исполнителя Удвоитель две команды, которым присвоены номера:
1. прибавь 1,
2. умножь на 2.
Первая из них увеличивает число на экране на 1, вторая — удваивает его.
Программа для Удвоителя — это последовательность команд.
Сколько есть программ, которые число 2 преобразуют в число 25?
Ответ:,
23 Сколько существует различных наборов значений логических переменных хг х2, ... ху х10,
которые удовлетворяют всем перечисленным ниже условиям?
V*2)V(^*3 V*4)= 1
(^х3 vХ4) Л Н*5 VХ6) = О
(^х5 Vxe) v(^7 V*8)= 1
ОХ7 V*8) Л(’х9 V*10) = о
В ответе не нужно перечислять все различные наборы значений х,, х2,... ху х10, при которых
выполнена данная система равенств. В качестве ответа вам нужно указать количество таких
наборов.
Ответ:.
Не забудьте перенести все ответы в бланк ответов № 1 в соответствии с инструкцией
по выполнению работы.
Часть 2
Для записи ответов на задания этой части (24—27) используйте БЛАНК ОТВЕТОВ № 2.
Запишите сначала номер задания (24, 25 и т. д.), а затем полное решение. Ответы записы-
вайте чётко и разборчиво.
24
Требовалось написать программу, которая вводит с клавиатуры последовательность из
п целых чисел (л = 4), и выводит на экран сумму чётных чисел среди этой последовательности.
Если в последовательности нет чётных чисел, программа выводит «NO». Известно, что вво-
димые числа не превышают по модулю 1000. Программист торопился и написал программу
неправильно.
Паскаль Бейсик
const п = 4; var i, a, sum, count: integer; begin sum := 0; count := 1; for i 1 to n do begin read(a) ; if a mod 2=0 then begin sum := sum + a; count := count + 1 end; end; if sum > 0 then writein(sum) else writein('NO') end. CONST N = 4 DIM I, A, SUM, COUNT AS INTEGER SUM := 0 COUNT := 1 FOR I = 1 TO N INPUT A IF A MOD 2=0 THEN SUM = SUM + A COUNT = COUNT + 1 END IF NEXT I IF SUM > 0 THEN PRINT SUM ELSE PRINT "NO" END IF END
Си Алгоритмический язык
#include<stdio.h> tfdefine n 4 int main() { int i, a, sum, count; sum = 0; count = 1; for (i=0 ; i < n ; i++) { scanf("%d", &a); if(a % 2 == 0) { sum = sum + a; count = count + 1; } } if (sum > 0) printf("%d", sum); else printf("NO"); } алг нач цел п = 4 цел a, i, sum, count sum := 0 count := 1 нц для i от 1 до n ввод а если mod(а,2) = 0 то sum := sum + а count : = count + 1 все кц если sum > 0 то вывод sum иначе вывод 'NO' все кон
Выполните следующие действия:
1. Напишите, что выведет программа при вводе чисел 12 3 —4.
2. Приведите пример такой входной последовательности, при которой программа работает
верно.
3. Укажите все ошибки в программе и исправьте их. Для этого для каждой ошибки:
выпишите строку, которая написана неправильно и приведите правильный вариант строки.
25 Дан целочисленный массив из 40 элементов. Элементы массива могут принимать произ-
вольные значения. Опишите на русском языке или на одном из языков программирования ал-
горитм, который находит и выводит сумму элементов наибольшей возрастающей последова-
тельности подряд идущих элементов массива.
Исходные данные объявлены так, как показано ниже. Запрещается использовать перемен-
ные, не описанные ниже, но разрешается не использовать часть из них.
Паскаль Бейсик
const N = 40; var a: array [1..N] of integer; i, 1, lmax, s, smax; integer; begin for i:=l to N do readln(a[i]); end. N = 40 DIM A(N) AS INTEGER DIM I, L, LMAX, S, SMAX AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I END
СИ Алгоритмический язык
#include <stdio.h> #define N 4 0 void main(void) (int a[N]; int i, 1, Imax, s, smax; for (i = 0; i < N; i++) scanf("%d", &a[i]) ; } алг нач цел N = 40 целтаб а [ 1: N ] цел i, L, Lmax, S, Smax нц для i от 1 до N ввод а [ i ] КЦ кон
Русский (естественный) язык
Объявляем массив А из 40 элементов. Объявляем целочисленные переменные I, L, Lmax, S, Smax. В цикле от 1 до 40 вводим элементы массива А с 1-го по 40-й.
В качестве ответа вам необходимо привести фрагмент программы (или описание алгоритма
на естественном языке), который должен находиться на месте многоточия. Вы можете запи-
сать решение также на другом языке программирования (укажите название и используемую
версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом
случае вы должны использовать те же самые исходные данные и переменные, какие были пред-
ложены в условии (например, в образце, записанном на естественном языке).
26 Два игрока, Петя и Ваня, играют в следующую игру.
Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя.
За один ход игрок может добавить в кучу два или три камня или увеличить количество камней
в куче в два раза.
Например, имея кучу из 15 камней, за один ход можно получить кучу из 17, 18 или 30 кам-
ней. У каждого игрока, чтобы делать ходы, есть неограниченное количество камней.
Игра завершается в тот момент, когда количество камней в куче становится не менее 30.
Победителем считается игрок, сделавший последний ход, т. е. первым получивший кучу, в ко-
торой будет 30 или больше камней.
В начальный момент в куче было S камней, 1 < S < 29.
Говорят, что игрок имеет выигрышную стратегию, если он может выиграть при любых
ходах противника. Описать стратегию игрока — значит описать, какой ход он должен сделать
в любой ситуации, которая ему может встретиться при различной игре противника.
Выполните следующие задания. Во всех случаях обосновывайте свой ответ.
1. а. Укажите все такие значения числа S, при которых Петя может выиграть в один ход.
Обоснуйте, что найдены все нужные значения S, и укажите выигрывающий ход для каждого
указанного значения S.
б. Укажите такое значение S, при котором Петя не может выиграть за один ход, но при лю-
бом ходе Пети Ваня может выиграть своим первым ходом. Опишите выигрышную стратегию
Вани.
2. Укажите два значения S, при которых у Пети есть выигрышная стратегия, причём
(а) Петя не может выиграть за один ход и (б) Петя может выиграть своим вторым ходом неза-
висимо от того, как будет ходить Ваня. Для каждого указанного значения S опишите выигрыш-
ную стратегию Пети.
3. Укажите такое значение S, при котором:
— у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым
ходом при любой игре Пети, и
— у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
Для указанного значения S опишите выигрышную стратегию Вани. Постройте дерево всех
партий, возможных при этой выигрышной стратегии Вани (в виде рисунка или таблицы). На
рёбрах дерева указывайте, кто делает ход, в узлах — количество камней в куче.
27 На вход программе подаётся последовательность символов, заканчивающаяся символом
«#». Другие символы «#» во входной последовательности отсутствуют.
Программа должна вывести на экран латинскую букву, встречающуюся во входной после-
довательности наибольшее количество раз и число этих раз (во второй строке).
Если таких букв во входной последовательности окажется несколько, программа должна
вывести на экран всех их, через пробел, в алфавитном порядке.
Строчные и прописные буквы не различаются.
Напишите эффективную, в том числе и по используемой памяти, программу (укажите ис-
пользуемую версию языка программирования, например, Borland Pascal 7.0), которая должна
решать поставленную задачу.
Пример входных данных:
Day, mice. "Year" - a mistake#
Пример выходных данных:
А
4
Другой вариант:
Пример входных данных:
ABCD АВСЕ ABCF#
Пример выходных данных:
АВС
3
ВАРИАНТ 5
Часть 1
Ответами к заданиям 1—23 являются число, последовательность букв или цифр, кото-
рые следует записать в БЛАНК ОТВЕТОВ № 1 справа от номера соответствующего зада-
ния, начиная с первой клеточки, без пробелов, запятых и других дополнительных симво-
лов. Каждый символ пишите в-отдельной клеточке в соответствии с приведёнными в бланке
образцами.
1
Даны 4 целых числа, записанных в шестнадцатеричной системе счисления: В5, 9F, AC, С1.
Сколько среди них чисел, которые меньше чем 2658?
Ответ:.
2 Логическая функция F задаётся выражением (z V -у) А (г \/х).
На рисунке приведён фрагмент таблицы истинности функции F, содержащий все наборы
аргументов, при которых функция F истинна.
Определите, какому столбцу таблицы истинности функции F соответствует каждая из пере-
менных X, у, 2.
Перем. 1 Перем. 2 Перем. 3 Функция
??? ??? ??? F
0 0 1 1
0 1 0 1
0 1 1 1
1 1 0 1
1 1 1 1
В ответе напишите буквы х, у, z в том порядке, в котором идут соответствующие им столбцы
(сначала — буква, соответствующая первому столбцу; затем —- буква, соответствующая второ-
му столбцу; затем — буква, соответствующая третьему столбцу). Буквы в ответе пишите под-
ряд, никаких разделителей между буквами ставить не нужно.
Пример. Пусть задано выражение х —> у, зависящее от двух переменных х и у, и таблица
истинности:
Перем. 1 Перем. 2 Функция
??? ??? F
0 0 1
0 1 0
1 0 1
1 1 1
Тогда первому столбцу соответствует переменная у, а второму столбцу — переменная х,
В ответе нужно написать: ух.
Ответ:
3
Между четырьмя местными аэропортами ЛЕСНОЙ, ЗИМА, КРАЙ и ПОЛЯНА, ежедневно
выполняются авиарейсы. Приведён фрагмент расписания перелётов между ними:
Аэропорт вылета Аэропорт прилёта Время вылета Время прилёта
ПОЛЯНА КРАЙ 06:20 08:35
КРАЙ ЛЕСНОЙ 10:25 12:35
ЛЕСНОЙ КРАЙ 11:45 13:30
ЗИМА ПОЛЯНА 12:15 14:25
ПОЛЯНА ЛЕСНОЙ 12:45 16:35
КРАЙ ПОЛЯНА 13:15 15:40
ЛЕСНОЙ ПОЛЯНА 13:40 17:25
ЛЕСНОЙ ЗИМА 15:30 17:15
ПОЛЯНА ЗИМА 17:35 19:30
ЗИМА ЛЕСНОЙ 19:40 21:55
Путешественник оказался в аэропорту ЛЕСНОЙ в полночь (0:00). Определите самое раннее
время, когда он может попасть в аэропорт ПОЛЯНА.
Ответ:.
4 В папке С: \Documents\May находятся следующие файлы и только они:
taram.doc
panam.docx
am.dat
gam.doc
gram.docx
К этим файлам применили следующую операцию: файлы, имена которых удовлетворяют
маске ?*am.do? переместили в папку « . . » относительно текущей.
Сколько файлов останется в исходной папке?
Ответ:.
5 Для кодирования некоторой последовательности, состоящей из букв А, В, С, D и Е, исполь-
зуется неравномерный двоичный код, позволяющий однозначно декодировать полученную
двоичную последовательность.
Вот этот код: А-110, В-10, С-01, D-00, Е-111.
Можно ли сократить для одной из букв длину кодового слова так, чтобы код по-прежнему
можно было декодировать однозначно?
Коды остальных букв меняться не должны.
Запишите ответ в виде: буква, кодовое слово.
Например, если бы ответ был «Для буквы F новый код будет 110», ответ нужно записать
как: F110.
Если невозможно ничего сократить, запишите в ответе просто цифру 0.
Ответ:;.
6
У исполнителя Утроитель две команды, которым присвоены номера:
1. умножь на 3,
2. прибавь 4.
Первая из них утраивает число на экране, вторая — увеличивает его на 4.
Запишите порядок команд в программе преобразования числа 1 в число 35, содержащей
не более 5 команд, указывая лишь номера команд. (Например, 21212 — это программа
прибавь 4
умножь на 3
прибавь 4
умножь на 3
прибавь 4,
которая преобразует число 1 в 61.)
(Если таких программ более одной, то запишите любую из них.)
Ответ:.
7 В электронной таблице в ячейке D4 записана формула, которая вычисляет результат умно-
жения значения ячейки СЗ на 2. Формулу из ячейки D4 скопировали в ячейку ЕЗ. Какое коли-
чество следующих утверждений не противоречит условию?
1) В ячейке ЕЗ вычисляется результат удвоения значения ячейки D2
2) В ячейке ЕЗ вычисляется результат удвоения значения ячейки С2
3) В ячейке ЕЗ вычисляется результат удвоения значения ячейки D3
Ответ:.
8
Определите, что будет напечатано в результате выполнения следующего фрагмента про-
граммы:
Бейсик Паскаль
DIM k, s AS INTEGER к = 0 s = 1 WHILE s < 1000 s = s * 2 к = к + 5 WEND PRINT к var k, s : integer; begin к := 0; s : = 1 ; while s < 1000 do begin s : = s * 2; к := к + 5 end; write(k); end.
Си Алгоритмический язык
{ int к, s; к = 0; s = 1 ; while (s < 1000) { s = s * 2 ; к = к + 5 ; } printf("%d", k); } нач цел k, s k := 0 s := 1 нц пока s < 1000 s : = s * 2 k := k + 5 КЦ вывод k KOH
Ответ:,
9 У Васи есть высокоскоростной доступ к сети Интернет со скоростью 222 бит/сек.
Петин компьютер связан с Васиным через канал связи со скоростью 219 бит/сек. Петя до-
говорился с Васей, что тот будет скачивать для него данные объёмом 8 Мбайт из Интернета
и ретранслировать их Пете. Компьютер Васи может начать ретрансляцию данных не раньше,
чем им будут получены первые 512 Кбайт этих данных. Каков минимально возможный про-
межуток времени (в секундах), с момента начала скачивания Васей данных, до полного их по-
лучения Петей? В ответе запишите только целое число, единицу измерения писать не нужно.
Ответ:.
10 Вася и Петя передают друг другу сообщения, используя флажки трёх цветов (синий, зелё-
ный и красный). Для этого они поднимают последовательно один из флажков, потом опускают
его и поднимают ещё какой-то. Наименьшее количество поднятий флажков в сообщении — 3,
наибольшее — 5. Сколько различных сообщений могут передавать мальчики?
Ответ:___________________________________________________________________________.
11
12
Дан рекурсивный алгоритм F. Приведите последовательность чисел (без пробелов), напеча-
танных на экране при выполнении вызова F(9, 0)?
Бейсик Паскаль
SUB F(n,k) IF k = 2 THEN PRINT n ELSE F(n \ 2, k + 1) F(n - 3, k + 1) END IF END SUB procedure F(n, k: integer); begin if k = 2 then write(n) else begin F(n div 2, k + 1) ; F(n - 3, k + 1) end end;
Си Алгоритмический язык
void F (int n) { if (k == 2) printf("%d",n); else { F(n / 2, k + 1) ; F (n - 3, k + 1) ; } } алг F(цел n,k) нач если k = 2 то ВЫВОД n иначе F (div (n, 2) f k + 1) F(n - 3, k + 1) все KOH
Ответ:,
В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая
часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети.
Обычно маска записывается по тем же правилам, что и 1Р-адрес, — в виде четырёх байтов, при-
чём каждый байт записывается в виде десятичного числа. При этом в маске сначала (в старших
разрядах) стоят единицы, а затем с некоторого разряда — нули.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному
IP-адресу узла и маске.
Например, если IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0, то адрес
сети равен 231.32.240.0.
Для узла с IP-адресом 183.142.167.102 адрес сети равен 183.142.160.0. Чему равно наи-
меньшее возможное количество единиц в разрядах маски?
Ответ:
13 При регистрации в компьютерной системе каждому пользователю выдаётся пароль, состо-
ящий из 10 символов и содержащий только символы из 17-символьного набора: А, В, С, D, Е,
F, G, Н, К, L, М, N, Р, Q, R, S, Т. В базе данных для хранения сведений о каждом пользователе
отведено одинаковое и минимально возможное целое число байт. При этом используют посим-
вольное кодирование паролей, все символы кодируют одинаковым и минимально возможным
количеством бит. Кроме собственно пароля, для каждого пользователя в системе хранятся до-
полнительные сведения, для чего отведено целое число байт, одинаковое для всех пользовате-
лей.
Для хранения сведений о 40 пользователях потребовалось 600 байт. Сколько байт выделе-
но для хранения дополнительных сведений об одном пользователе? В ответе запишите только
целое число — количество байт.
Ответ:.
14
Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетча-
той плоскости включает 4 команды-приказа и 4 команды проверки условия.
Команды-приказы:
вверх вниз влево вправо
При выполнении любой из этих команд РОБОТ перемещается на одну клетку соответствен-
но: вверх Т, вниз Ф, влево вправо —
Если РОБОТ начнёт движение в сторону находящейся рядом с ним стены, то он разрушится
и программа прервётся.
Другие четыре команды проверяют истинность условия отсутствия стены у каждой сторо-
ны той клетки, где находится РОБОТ:
сверху свободно снизу свободно слева свободно справа свободно
Цикл
ПОКА <условие>
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ <условие>
ТО команда!
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда! (если условие истинно) или команда? (если условие ложно).
Сколько клеток лабиринта соответствует требованию, что, начав движение в ней и выпол-
нив предложенную программу, РОБОТ уцелеет и остановится в закрашенной клетке (клет-
ка F6)?
НАЧАЛО
ПОКА Ссправа свободно ИЛИ снизу свободно>
ПОКА <справа свободно>
вправо
КОНЕЦ ПОКА
ЕСЛИ сснизу свободно>
вниз
ИНАЧЕ
вверх
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
15
На рисунке — схема дорог, связывающих города А, Б,
В, Г, Д, Е, Ж, 3, И, К.
По каждой дороге можно двигаться только в одном на-
правлении, указанном стрелкой.
Сколько существует различных путей из города А в го-
род К?
Ответ:___________________________________________________________________________________
16 | Сколько единиц содержится в двоичной записи значения выражения:
8ie + 2s2 _ 15 ?
Ответ:.
17
В языке запросов к поисковому серверу для обозначения логической операции «ИЛИ» ис-
пользуется символ «|», а для логической операции «И» — «&».В таблице приведено количество
страниц, которое находит поисковая система по каждому запросу.
Запрос Количество найденных страниц
Колбаса & Молоко 15100
Сыр & Молоко 8900
Колбаса & Сыр & Молоко 7500
Какое количество страниц будет найдено по запросу: (Колбаса | Сыр) & Молоко ?
Считается, что все запросы выполнялись практически одновременно, так что набор страниц,
содержащих все искомые слова, не изменялся за время выполнения запросов.
Ответ:.
18 Обозначим через т&п поразрядную конъюнкцию неотрицательных целых чисел тип. Так,
например, 14&5 = 11102 & 01012 = 01002 = 4.
Для какого наименьшего неотрицательного целого числа А формула
х&51 * 0 -> (х&А = 0 -> х&25 * 0)
тождественно истинна (то есть принимает значение 1 при любом неотрицательном целом
значении переменной х)?
Ответ:.
19
В программе используется целочисленный массив А с индексами от 0 до 9. Значения эле-
ментов массива равны 4; 5; 4; 7; 10; 8; 9; 11; 7; 8 соответственно, т. е. А[0] = 4; А[ 1 ] = 5 и т. д.
Определите значение переменной k после выполнения следующего фрагмента программы,
записанной ниже на разных языках программирования.
Бейсик Паскаль
к = 0 FOR i = 0 ТО 8 IF A(i) < A(i+1) AND i MOD 2=0 THEN к = к + 1 t = A(i) A(i) = A(i+1) A(i+1) = t ENDIF NEXT i к := 0; for i := 0 to 8 do if (A [i] < A[i+1]) and (i mod 2=0) then begin к := к + 1; t : = A [ i ] ; A[i] := A[i+1]; A[i+1] := t end;
Си Алгоритмический язык
к = 0; for (i=0 ; i<=8 ; i++) if (A[i] < A[i+1] && i % 2 == 0) { к = к + 1; t = A [ i ] ; A[i] = A[i+1]; A[i+1] = t; } k := 0 нц для i от 0 до 8 если A[i] < A[i+1] и mod(i,2) = 0 то k := к + 1 t := A[i] A[i] := A[i+1] A[i+1] := t все КЦ
Ответ:
20
Ниже на четырёх языках записан алгоритм. Получив на вход число х, этот алгоритм пе-
чатает два числа: L и М. Укажите наименьшее из таких чисел х, при вводе которых алгоритм
печатает сначала 1, а потом 60.
Бейсик Паскаль
DIM X, M, L AS INTEGER var x, M, L: integer;
INPUT X begin
M = 1 readln(x);
L = 0 M := 1;
WHILE X > 0 L := 0;
M = M * (X MOD 10) while x > 0 do
IF X MOD 10 > 3 THEN begin
L = L + 1 M := M * (x mod 10) ;
ENDIF if x mod 10 > 3 then
X = X \ 10 L := L + 1;
WEND x := x div 10
PRINT L end;
PRINT M writein (L); write(M)
end.
Си Алгоритмический язык
#include<stdio.h> алг
void main() нач
{ цел х, М, L
int x, M, L; ВВОД X
scanf("%d", &x); М := 1
M = 1; L := 0
L = 0; нц пока х > 0
while (x > 0){ М := М * mod(х,10)
M = M * (x % 10) ; если mod(х,10) > 3
if (x % 10 > 3) ТО
L = L + 1; L := L + 1
x = x / 10; все
} х := div(x,10)
printf("%d\n%d", L, M); кц
] вывод L, нс, М
КОН
—
21
Определите, при каком наименьшем значении Ь в результате выполнения следующего ал-
горитма будет напечатано число 100 (для Вашего удобства алгоритм представлен на четырёх
языках):
Бейсик Паскаль
DIM А, В AS INTEGER INPUT В А = 0 WHILE F(А) < В А = А + 1 WEND PRINT А FUNCTION F (х) DIM I, S AS INTEGER S = 0 1 = 1 WHILE I <= x S = S + 5 1 = 1 + 1 WEND F = S END FUNCTION var a,b : integer; function F(x : integer) : integer; var i,s : integer; begin s : = 0 ; i : = 1 ; while i <= x do begin s : = s + 5; i := i + 1 end; F := s end; BEGIN readln(b); a : = 0 ; while F(a) < b do begin a := a + 1 end; write(a) END.
Си Алгоритмический язык
int F(int x) { int i,s; s = 0; i = 1; while(i <= x) { s = s + 5; i = i + 1 ; } return s; } void main() ( int a, b; scant("%d",&b); a = 0; while (F(a) < b) { a = a + 1 ; } printf("%d", a); } алг нач цел а, Ь ввод Ь а : = 0 нц пока F(а) < b а : = а + 1 КЦ вывод а кон алг цел F(цел х) нач цел i, s s : = 0 i := 1 нц пока i <= х s := s + 5 i := i + 1 КЦ знач := з кон
Ответ:__________________________________________________________________________________
22 Исполнитель Июнь 15 преобразует число на экране.
У исполнителя есть две команды, которым присвоены номера:
1. Прибавить 1
2. Умножить на 2
Первая команда увеличивает число на экране на 1, вторая умножает его на 2.
Программа для исполнителя Июнь15 — это последовательность команд.
Сколько существует программ, для которых при исходном числе 1 результатом является чис-
ло 45 и при этом траектория вычислений содержит число 18?
Траектория вычислений программы — это последовательность результатов выполнения
всех команд программы. Например, для программы 121 при исходном числе 7 траектория будет
состоять из чисел 8,16,17.
Ответ:
23
24~]
Сколько существует различных наборов значений логических переменных хр х? ... х& х10,
которые удовлетворяют всем перечисленным ниже условиям?
(Xj Vx2) Л(^з V-xJ = 1
(х3 Vx4) Л(^х5 V^x6) = 1
(х5 Vx6) Л(^х7 V^x8) = 1
(Х7 Vx8) Л(^х9 V^x10) = 1
В ответе не нужно перечислять все различные наборы значений хр х2,... xrj> х10, при которых
выполнена данная система равенств. В качестве ответа вам нужно указать количество таких
наборов.
Ответ:.
Не забудьте перенести все ответы в бланк ответов № 1 в соответствии с инструкцией
по выполнению работы.
Часть 2
Для записи ответов на задания этой части (24—27) используйте БЛАНК ОТВЕТОВ № 2.
Запишите сначала номер задания (24, 25 и т. д.), а затем полное решение. Ответы записы-
вайте чётко и разборчиво.
Требовалось написать программу, которая вводит с клавиатуры последовательность из
п целых чисел (п = 4), и выводит на экран количество нечётных чисел среди этой последова-
тельности. Известно, что вводимые числа не превышают по модулю 1000. Программист торо-
пился и написал программу неправильно.
Паскаль Бейсик
const п = 4; var i, a, count: integer; begin count : = 0; for i := 1 to n do begin read(a); if a mod 2 > 0 then count := count + a end; writein(count) end. CONST N = 4 DIM I, A, COUNT AS INTEGER COUNT := 0 FOR I = 1 TO N INPUT A IF A MOD 2 > 0 THEN COUNT = COUNT + A END IF NEXT I PRINT COUNT END
Си Алгоритмический язык
#include<stdio.h> # define n 4 int main() { int i, a, count; count = 0; for (i = 0 ; i < n ; i++) { scanf("%d", &a); if(a % 2 > 0) count = count + a; ) printf("%d", count); ) алг нач цел п = 4 цел a, i, count count := 0 нц для i от 1 до п ввод а если mod(а,2) > 0 ТО count := count + а все кц вывод count кон
Выполните следующие действия:
1. Напишите, что выведет программа при вводе чисел -11-3 5.
2. Приведите пример такой входной последовательности, при которой программа работает
верно.
3. Укажите все ошибки в программе и исправьте их. Для этого для каждой ошибки:
выпишите строку, которая написана неправильно и приведите правильный вариант строки.
25 Дан целочисленный массив из 40 элементов. Элементы массива могут принимать произ-
вольные значения. Опишите на русском языке или на одном из языков программирования
алгоритм, который находит и выводит номера двух элементов массива, сумма которых мини-
мальна.
Исходные данные объявлены так, как показано ниже. Запрещается использовать перемен-
ные, не описанные ниже, но разрешается не использовать часть из них.
Паскаль Бейсик
const N = 40; var a: array [1..N] of integer; i, j, min, min2, s: integer; begin for i:=l to N do readln(a[i]); N = 40 DIM A(N) AS INTEGER DIM I, J, MIN, MIN2 AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I
end. END
СИ Алгоритмический язык
#include <stdio.h> #define N 40 void main(void) {int a[N]; int i, j, min, min2, s; for (i=0; i<N; i++) scanf("%d", &a[i]); алг нач цел N = 40 целтаб a[l:N] цел i, j, MIN, MIN2, s нц для i от 1 до N ввод а[i] КЦ
} кон
Русский (естественный) язык
Объявляем массив А из 40 элементов. Объявляем целочисленные переменные I, J, MIN, MIN2, S. В цикле от 1 до 40 вводим элементы массива А с 1-го по 40-й.
В качестве ответа вам необходимо привести фрагмент программы (или описание алгоритма
на естественном языке), который должен находиться на месте многоточия. Вы можете запи-
сать решение также на другом языке программирования (укажите название и используемую
версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом
случае вы должны использовать те же самые исходные данные и переменные, какие были пред-
ложены в условии (например, в образце, записанном на естественном языке).
2g Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней.
Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу
один или три камня или увеличить количество камней в куче в два раза. Например, имея кучу
из 15 камней, за один ход можно получить кучу из 16, 18 или 30 камней. У каждого игрока,
чтобы делать ходы, есть неограниченное количество камней.
Игра завершается в тот момент, когда количество камней в куче становится не менее 26.
Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу,
в которой будет 26 или больше камней.
В начальный момент в куче было S камней, 1 < S < 25.
Говорят, что игрок имеет выигрышную стратегию, если он может выиграть при любых хо-
дах противника. Описать стратегию игрока — значит описать, какой ход он должен сделать
в любой ситуации, которая ему может встретиться при различной игре противника.
Выполните следующие задания. Во всех случаях обосновывайте свой ответ.
1. а. Укажите все такие значения числа S, при которых Петя может выиграть в один ход.
Обоснуйте, что найдены все нужные значения S, и укажите выигрывающий ход для каждого
указанного значения S.
б. Укажите такое значение S, при котором Петя не может выиграть за один ход, но при лю-
бом ходе Пети Ваня может выиграть своим первым ходом. Опишите выигрышную стратегию
Вани.
2. Укажите два значения S, при которых у Пети есть выигрышная стратегия, причём
(а) Петя не может выиграть за один ход и (б) Петя может выиграть своим вторым ходом неза-
висимо от того, как будет ходить Ваня. Для каждого указанного значения S опишите выигрыш-
ную стратегию Пети.
3. Укажите такое значение S, при котором:
— у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым хо-
дом при любой игре Пети, и
— у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
Для указанного значения S опишите выигрышную стратегию Вани. Постройте дерево всех
партий, возможных при этой выигрышной стратегии Вани (в виде рисунка или таблицы). На
рёбрах дерева указывайте, кто делает ход, в узлах — количество камней в куче.
27 На вход программы подаётся последовательность символов, заканчивающихся символом
«#». Других символов «#» во входной последовательности нет.
Будем называть словом любую последовательность подряд идущих символов, отделённую
пробелами. Также слово может начинаться с начала строки.
Известно, что во входной последовательности не более 10е символов, при этом слова имеют
длину не более 100 символов.
Напишите эффективную, в том числе и по используемой памяти, программу (укажите ис-
пользуемую версию языка программирования, например, Borland Pascal 7.0), которая найдёт
и выведет на экран слово максимальной длины. Если во входной строке несколько слов макси-
мальной длины, необходимо вывести на экран первое такое слово.
Пример входных данных:
Day, mice. "Year" - a mistake#
Пример выходных данных:
mistake
ВАРИАНТ 6
Часть 1
Ответами к заданиям 1—23 являются число, последовательность букв или цифр, кото-
рые следует записать в БЛАНК ОТВЕТОВ № 1 справа от номера соответствующего зада-
ния, начиная с первой клеточки, без пробелов, запятых и других дополнительных симво-
лов. Каждый символ пишите в отдельной клеточке в соответствии с приведёнными в бланке
образцами.
1_ Даны 4 целых числа, записанных различных системах счисления: 9Fie, 101101012, 274g,
СЕ16. Сколько среди них чисел, значение которых лежит между А516 и CD16?
Ответ:.
2
Логическая функция F задаётся выражением х /\^у Д((^2) _> w)-
На рисунке приведён фрагмент таблицы истинности функции F, содержащий все наборы
аргументов, при которых функция F истинна.
Определите, какому столбцу таблицы истинности функции F соответствует каждая из пере-
менных х, у, z, w.
Перем. 1 Перем. 2 Перем. 3 Перем. 3 Функция
??? ??? ??? ??? F
0 0 1 1 1
1 0 0 1 1
1 0 1 1 1
В ответе напишите буквы х, у, z, w в том порядке, в котором идут соответствующие им столб-
цы (сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая
второму столбцу; затем — буква, соответствующая третьему столбцу; затем — буква, соответ-
ствующая четвертому столбцу). Буквы в ответе пишите подряд, никаких разделителей между
буквами ставить не нужно.
Пример. Пусть задано выражение х -» у, зависящее от двух переменных х и у, и таблица
истинности:
Перем. 1 Перем. 2 Функция
??? ??? F
0 0 1
0 1 0
1 0 1
1 1 1
Тогда первому столбцу соответствует переменная у, а второму столбцу — переменная х.
В ответе нужно написать: ух.
Ответ:
3 Между четырьмя местными аэропортами: ЛЕСНОЙ, КРАЙ, ЗИМА и ПОЛЯНА ежедневно
выполняются авиарейсы. Приведён фрагмент расписания перелётов между ними.
Аэропорт вылета Аэропорт прилёта Время вылета Время прилёта
ЛЕСНОЙ ПОЛЯНА 13:10 17:15
ЗИМА КРАЙ 13:00 14:30
ЗИМА ЛЕСНОЙ 12:10 14:20
ПОЛЯНА ЗИМА 11:15 15:30
ЛЕСНОЙ ЗИМА 12:35 14:50
КРАЙ ЗИМА 12:30 14:20
ЛЕСНОЙ КРАЙ 10:30 12:15
КРАЙ ПОЛЯНА 14:40 16:45
ПОЛЯНА КРАЙ 15:15 17:20
ЗИМА ПОЛЯНА 14:30 16:20
Путешественник оказался в аэропорту ЛЕСНОЙ в полночь (0:00). Определите самое раннее
время, когда он может попасть в аэропорт ПОЛЯНА.
Ответ:.
4 Дан фрагмент базы данных, содержащий информацию о родственных отношениях. Опреде-
лите, сколько предков Арно В.А. упомянуто в таблице.
Таблица 1
ID Фамилия И.О. Пол
1518 Гираб В.А. М
1885 Жуйко А.И. м
2946 Калпен Л.В. м
3472 Арно В.А. •угг* /IV
4705 Иваненко И.Л. м
5624 Ирита Е.О. •утл /IV
6109 Кирта У.Т. /TV
7296 Олинг К.Л. •уе? /TV
8434 Кименко З.Т. •УЕ/» /TV
9657 Вирк Я.М. •утл /Tv
...
Ответ:
Таблица 2
ГО_Родителя 1В_Ребёнка
1885 3472
6109 3472
9657 1885
4705 1885
2946 4705
5624 4705
8434 2946
1518 2946
2946 7296
5624 7296
... ...
5 Для кодирования некоторой последовательности, состоящей из букв А, В, С, D и Е, исполь-
зуется неравномерный двоичный код, позволяющий однозначно декодировать полученную
двоичную последовательность. Вот этот код:
А-011, В-000, С-10, D-010, Е-001. Можно ли сократить для одной из букв длину кодово-
го слова так, чтобы код по-прежнему можно было декодировать однозначно? Коды остальных
букв меняться не должны.
Запишите ответ в виде: буква, кодовое слово. Например, если бы ответ был «Для буквы F
новый код будет 110», ответ нужно записать как: F110. Если невозможно ничего сократить, за-
пишите в ответе просто цифру 0.
Ответ:.
Автомат получает на вход трёхзначное число. По этому числу строится новое число по сле-
дующим правилам.
1. Складываются отдельно первая и вторая цифры, а также — вторая и третья цифры.
2. Полученные два числа записываются друг за другом в порядке невозрастания без раз-
делителей.
Пример. Исходное число: 179. Суммы: 1 + 7 = 8; 7 + 9 = 16.
Результат: 168.
Укажите наименьшее число, при обработке которого автомат выдаёт результат 126.
Ответ:
Дан фрагмент электронной таблицы:
А В С D
1 3 5
2 =А1/3 =(А1+С1+1)/3 -С1-2 =(В1+С2)/6
Какое число должно быть записано в ячейке В1, чтобы построенная
после выполнения вычислений диаграмма по значениям диапазона
ячеек A2:D2 соответствовала рисунку?
Ответ:_________
Г 8
Определите, что будет напечатано в результате выполнения следующего фрагмента про-
граммы:
Бейсик Паскаль
DIM k, s AS INTEGER к = 50 3 = 1024 WHILE s > 0 S = s \ 2 к = к - 3 WEND PRINT к var к, s : integer; begin к := 50; s := 1024; while s > 0 do begin s := s div 2; к := к - 3 end; write (k); end.
Си Алгоритмический язык
{ int к, s; к = 50; s = 1024; while (s > 0) { s = s / 2; к = к - 3; } printf("%d", к); } нач цел k, s k := 50 s := 1024 нц пока s > 0 s := div(s,2) k := k - 3 КЦ вывод k KOH
Ответ:
9
Производится двухканальная (стерео) звукозапись с частотой дискретизации 16 кГц
и 4-битным разрешением. Запись длится одну минуту, её результаты записываются в файл,
сжатие данных не производится. Укажите размер полученного файла (в Мбайт) с точностью
1 Мбайт. В ответе запишите только целое число, единицу измерения писать не нужно.
Ответ:.
10 Для кодирования 500 различных сообщений используют 4 последовательных цветовых
вспышки.
Лампочки скольких различных цветов должны использоваться при передаче?
Ответ:.
11
Определите, сколько звёздочек будет напечатано в результате вызова F(5) приведённой под
программы:
Бейсик Паскаль
SUB F(n) IF n > 1 THEN F(n \ 2) F(n - 1) END IF PRINT "*"; END SUB procedure F(n: integer); begin if n > 1 then begin F(n div 2); F(n - 1) end; write('* 1) end;
Си Алгоритмический язык
void F(int n) { if (n > 1) { F(n / 2) ; F(n - 1); } printf("*") ; } алг F(цел n) нач если n > 1 то F(div (n, 2) ) F(n - 1) все вывод '*' КОН
Ответ:,
12 I В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая
часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети.
Обычно маска записывается по тем же правилам, что и 1Р-адрес, — в виде четырёх байтов, при-
чём каждый байт записывается в виде десятичного числа. При этом в маске сначала (в старших
разрядах) стоят единицы, а затем с некоторого разряда — нули.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному
IP-адресу узла и маске.
Например, если IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0, то адрес
сети равен 231.32.240.0.
Для узла с IP-адресом 216.182.73.175 адрес сети равен 216.182.72.0. Чему равно наиболь-
шее возможное количество единиц в разрядах маски?
Ответ:.
13 При регистрации в компьютерной системе каждому пользователю выдаётся пароль, состо-
ящий из 15 символов и содержащий только символы из 12-символьного набора: А, В, С, D, Е,
F, G, Н, К, L, М, N.
В базе данных для хранения сведений о каждом пользователе отведено одинаковое и мини-
мально возможное целое число байт.
При этом используют посимвольное кодирование паролей, все символы кодируют одинако-
вым и минимально возможным количеством бит.
Кроме собственно пароля, для каждого пользователя в системе хранятся дополнительные
сведения, для чего отведено 12 байт на одного пользователя.
Определите объём памяти (в байтах), необходимый для хранения сведений о 30 пользовате-
лях. В ответе запишите только целое число — количество байт.
Ответ:.
14 Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может
выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например,
выполнение команды
заменить (222, 34)
преобразует строку 77222277 в строку 7734277.
Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет
эту строку.
Б) нашлось (v).
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она
встречается, то команда возвращает логическое значение «истина», в противном случае воз-
вращает значение «ложь». Строка исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда!
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда! (если условие истинно) или команда2 (если условие ложно).
Какая строка получится в результате применения приведённой ниже программы к строке,
состоящей из 80 идущих подряд цифр 7? В ответе запишите полученную строку.
НАЧАЛО
ПОКА нашлось (777) ИЛИ нашлось (888)
ЕСЛИ нашлось (777)
ТО заменить (777, 8)
ИНАЧЕ заменить (888, 7)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Ответ:
15
На рисунке — схема дорог, связывающих города А, Б,
В, Г, Д, Е, Ж, 3, И, К.
По каждой дороге можно двигаться только в одном на-
правлении, указанном стрелкой.
Сколько существует различных путей из города А в
город К?
Ответ:
16 Значение арифметического выражения: 9200+ З100— 7 — записали в системе счисления с ос-
нованием 3. Сколько цифр «2» содержится в этой записи?
Ответ:.
17
В языке запросов к поисковому серверу для обозначения логической операции «ИЛИ» ис-
пользуется символ «|», а для логической операции «И» — «&». В таблице приведено количе-
ство страниц, которое находит поисковая система по каждому запросу.
Запрос Количество найденных страниц (в тысячах)
Колбаса | Сыр | Паштет 26
Паштет 13
Сыр 8
Колбаса & Паштет 3
Сыр & Паштет 2
Колбаса & Сыр 2
Колбаса & Сыр & Паштет 1
Какое количество страниц (в тысячах) будет найдено этой поисковой системой по запросу
Колбаса ?
Ответ:.
18 Обозначим через т&п поразрядную конъюнкцию неотрицательных целых чисел тип. Так,
например, 14&5 = 11102&01012 = 01002 = 4.
Для какого наименьшего неотрицательного целого числа А формула
(х&А = О Дх&58 * О) -> х&34 * О
тождественно истинна (то есть принимает значение 1 при любом неотрицательном целом
значении переменной х)?
Ответ:.
191
В программе используется целочисленный массив А с индексами от 0 до 9. Значения эле-
ментов массива равны 4; 5; 4; 7; 10; 8; 9; 11; 7; 8 соответственно, т. е. А[0] = 4; А[1] = 5 и т. д.
Определите значение переменной k после выполнения следующего фрагмента программы,
записанной ниже на разных языках программирования.
Бейсик Паскаль
к = 0 FOR i = 0 ТО 9 IF A(i) >= А(0) THEN к = к + 1 t = A(i) A(i) = А(0) А(0) = t ENDIF NEXT i к := 0; for i := 0 to 9 do if Afi] >= A[0] then begin к := к + 1; t := Afi] ; Afi] := A[0]; A [0] := t end;
Си Алгоритмический язык
к = 0; for (i = 0 ; i <= 9 ; i++) if (A[i] >= A[0] ) { к = к + 1; t = A [i ] ; A[i] = A[0] ; A[0] = t; ) k := 0 нц дня i от 0 до 9 если А[i] >= А[0] то к := к + 1 t := A[i] A[i] := А[0] А[0] := t все КЦ
Ответ:__________________________________________________________________________________
20
Ниже на четырёх языках записан алгоритм. Получив на вход число х, этот алгоритм пе-
чатает два числа L и М. Укажите наибольшее из таких чисел х, при вводе которых алгоритм
печатает сначала 3, а потом 7.
Бейсик Паскаль
DIM X, L, М AS INTEGER INPUT X L = 0 M = 9 WHILE X > 0 L = L + 1 IF M > (X MOD 10) THEN M = X MOD 10 ENDIF X = X \ 10 WEND PRINT L PRINT M var x, L, M: integer; begin readln(x); L ;= 0; M := 9; while x > 0 do begin L := L + 1; if M > (x mod 10) then M := x mod 10; x := x div 10 end; writein (L); write(M) end.
Си Алгоритмический язык
#include<stdio.h> void main!) { int x, L, M; scanf("%d", &x) ; L = 0; M = 9; while (x > 0){ L = L + 1; if(M > x % 10) M = x % 10 x = x / 10; } printf("%d\n%d", L, M); } алг нач цел х, L, И ВВОД X L := 0 М := 9 нц пока х > 0 L := L + 1 если М > mod(х,10) ТО М := mod(х,10) все х :- div(х,10) кц вывод L, нс, М кон
Ответ:
21
Определите, при каком наименьшем значении Ь в результате выполнения следующего ал-
горитма будет напечатано число 20 (для Вашего удобства алгоритм представлен на четырёх
языках):
Бейсик Паскаль
DIM А, В AS INTEGER INPUT В А = 0 WHILE F (А) < В А = А + 1 WEND PRINT А FUNCTION F (х) IF х = 0 F = 0 ELSE F = 7 + F(x-l) END IF END FUNCTION var a,b : integer; function F(x : integer) : integer; begin if x = 0 then F := 0 else F := 7 + F(x-l) end; BEGIN readln (b); a := 0; while F(a) < b do begin a : = a + 1 end; write (a) END.
Си Алгоритмический язык
int F(int x) { if(x == 0) return 0; else return 7 + F(x-l); } void main() { int a, b; scanf("%d",&b); a = 0; while (F(a) < b) { a = a + 1; printf ("%d", a); } алг нач цел а, Ь ввод b а : = 0 нц пока F(а) < b а := а + 1 кц вывод а кон алг цел F(цел х) нач если х > 0 то знач : = 0 иначе знач := 7 + F(x-l) КЦ КОН
Ответ:__________________________________________________________________________________
22 У исполнителя Прибавлятель две команды, которым присвоены номера:
1. прибавь 1,
2. прибавь 10.
Первая из них увеличивает число на экране на 1, вторая увеличивает его на 10.
Программа для Прибавлятеля — это последовательность команд.
Сколько есть программ, которые число 1 преобразуют в число 24?
Ответ:
23
Сколько существует различных наборов значений логических переменных хр х2, ... х9, xw,
которые удовлетворяют всем перечисленным ниже условиям?
(х4 = -х2) V(^x3^x4) = 0
(х3 ——х4) \/(-х5 = х6) = 0
= V(^x7 = x8) = 0
(х7 = -х8) \/(-х9 = х10) = О
В ответе не нужно перечислять все различные наборы значений хр х2,... хд, х10, при которых
выполнена данная система равенств. В качестве ответа вам нужно указать количество таких
наборов.
Не забудьте перенести все ответы в бланк ответов № 1 в соответствии с инструкцией
по выполнению работы.
Часть 2
Для записи ответов на задания этой части (24—27) используйте БЛАНК ОТВЕТОВ № 2.
Запишите сначала номер задания (24, 25 и т. д.), а затем полное решение. Ответы записы-
вайте чётко и разборчиво.
24 Требовалось написать программу, которая вводит с клавиатуры последовательность из
п целых чисел (п. = 4), и выводит на экран максимальное число этой последовательности.
Известно, что вводимые числа не превышают по модулю 1000. Программист торопился и
написал программу неправильно.
Паскаль Бейсик
const п = 4; var i, a, max: integer; begin max := 0; for i := 1 to n do begin read (a) ; if a > max then a := max end; writein(max) end. CONST N = 4 DIM I, A, MAX AS INTEGER MAX := 0 FOR I = 1 TO N INPUT A IF A > MAX THEN A = MAX END IF NEXT I PRINT MAX END
Си Алгоритмический язык
#include<stdio.h> #define n 4 int main () { int i, a, max; max = 0; for (i = 0 ; i < n ; i++) { scanf("%d", &a); if(a > max) a = max; } printf("%d", max); } алг нач цел п = 4 цел a, if max max := 0 нц для i от 1 до п ввод а если а > max то а := max все КЦ вывод max кон
Выполните следующие действия:
1. Напишите, что выведет программа при вводе чисел 12 3 4.
2. Приведите пример такой входной последовательности, при которой программа работает
верно.
3. Укажите все ошибки в программе и исправьте их. Для этого для каждой ошибки:
выпишите строку, которая написана неправильно и приведите правильный вариант
строки.
25 Дан целочисленный массив из 40 элементов.
Элементы массива могут принимать значения от —10000 до 10000. Опишите на русском
языке или на одном из языков программирования алгоритм, который находит и выводит наи-
большую сумму двух соседних элементов, которая не кратна 3-м. Если таких пар нет, вывести
на экран 0.
Исходные данные объявлены так, как показано ниже. Запрещается использовать перемен-
ные, не описанные ниже, но разрешается не использовать часть из них.
Паскаль Бейсик
const N = 40; var a: array [1..N] of integer; i, k, sum, max: integer; begin for i := 1 to N do readin(a[i]) ; end. N = 40 DIM A(N) AS INTEGER DIM I, K, SUM, MAX AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I END
СИ Алгоритмический язык
#include <stdio.h> #define N 40 void main(void) {int a[N]; int i, k, sum, max; for (i = 0; i < N; i++) scanf ("%d", &a [i]) ; } алг нач цел N = 40 целтаб а [ 1: N ] цел i, k, sum, max нц для i от 1 до N ввод а[i] КЦ кон
Русский (естественный) язык
Объявляем массив А из 40 элементов. Объявляем целочисленные переменные I, К, SUM, МАХ. В цикле от 1 до 40 вводим элементы массива А с 1-го по 40-й.
В качестве ответа вам необходимо привести фрагмент программы (или описание алгоритма
на естественном языке), который должен находиться на месте многоточия. Вы можете запи-
сать решение также на другом языке программирования (укажите название и используемую
версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом
случае вы должны использовать те же самые исходные данные и переменные, какие были пред-
ложены в условии (например, в образце, записанном на естественном языке).
26 Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней.
Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу
один или два камня или увеличить количество камней в куче в два раза. Например, имея кучу
из 15 камней, за один ход можно получить кучу из 16, 17 или 30 камней. У каждого игрока,
чтобы делать ходы, есть неограниченное количество камней.
Игра завершается в тот момент, когда количество камней в куче становится не менее 29.
Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу,
в которой будет 29 или больше камней.
В начальный момент в куче было S камней, 1 S 28.
Говорят, что игрок имеет выигрышную стратегию, если он может выиграть при любых хо-
дах противника. Описать стратегию игрока — значит описать, какой ход он должен сделать
в любой ситуации, которая ему может встретиться при различной игре противника.
Выполните следующие задания.
Во всех случаях обосновывайте свой ответ.
1. а. Укажите все такие значения числа S, при которых Петя может выиграть в один ход.
Обоснуйте, что найдены все нужные значения S, и укажите выигрывающий ход для каждого
указанного значения S.
б. Укажите такое значение S, при котором Петя не может выиграть за один ход, но при лю-
бом ходе Пети Ваня может выиграть своим первым ходом. Опишите выигрышную стратегию
Вани.
2. Укажите 3 значения S, при которых у Пети есть выигрышная стратегия, причём (а) Петя
не может выиграть за один ход и (б) Петя может выиграть своим вторым ходом независимо от
того, как будет ходить Ваня. Для каждого указанного значения S опишите выигрышную стра-
тегию Пети.
3. Укажите такое значение S, при котором:
— у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым хо-
дом при любой игре Пети, и
— у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
Для указанного значения S опишите выигрышную стратегию Вани.
Постройте дерево всех партий, возможных при этой выигрышной стратегии Вани (в виде
рисунка или таблицы). На рёбрах дерева указывайте, кто делает ход, в узлах — количество
камней в куче.
27 ] После единых выпускных экзаменов по информатике в район пришла информация о том,
какой ученик какой школы сколько баллов набрал. Эта информация в том же виде была разо-
слана в школы.
Завуч школы № 50 решила наградить двух учащихся, которые лучше всех в школе сдали
информатику.
Программа должна вывести на экран фамилии и имена этих учеников.
Если наибольший балл набрало больше двух человек — вывести количество таких уче-
ников.
Если наибольший балл набрал один человек, а следующий балл набрало несколько чело-
век — нужно вывести только фамилию и имя лучшего.
Напишите эффективную, в том числе и по используемой памяти, программу (укажите ис-
пользуемую версию языка программирования, например, Borland Pascal 7.0), которая должна
вывести на экран требуемую информацию. Известно, что информатику сдавало больше 5-ти
учеников школы № 50.
На вход программе сначала подаётся число учеников, сдававших экзамен. В каждой из сле-
дующих N строк находится информация об учениках в формате:
<Фамилия> <Имя> <Номер школы> <Количество баллов>,
где <Фамилия> — строка, состоящая не более, чем из 30 символов без пробелов, <Имя> —
строка, состоящая не более, чем из 20 символов без пробелов, <Номер школы> — целое число
в диапазоне от 1 до 99, <Количество баллов> — целое число диапазоне от 1 до 100. Эти данные
записаны через пробел, причём ровно один между каждой парой (то есть, всего по три пробела
в каждой строке).
Пример входной строки:
Иванов Иван 50 87
Пример выходных данных:
Круглов Василий
Тарасова Дарья
Другой вариант выходных данных:
7
Третий вариант выходных данных:
Гусарский Илья
ВАРИАНТ 7
Часть 1
Ответами к заданиям 1—23 являются число, последовательность букв или цифр, кото-
рые следует записать в БЛАНК ОТВЕТОВ № 1 справа от номера соответствующего зада-
ния, начиная с первой клеточки, без пробелов, запятых и других дополнительных симво-
лов. Каждый символ пишите в отдельной клеточке в соответствии с приведёнными в бланке
образцами.
1 Число X в шестнадцатеричной системе счисления оканчивается на 916, а в восьмеричной си-
стеме счисления — трёхзначное и начинается на 238.Укажите это число в десятичной системе
счисления.
Ответ:.
2
Логическая функция F задаётся выражением (z Дх) V((^*) А У)-
На рисунке приведён фрагмент таблицы истинности функции F, содержащий все наборы
аргументов, при которых функция F истинна.
Определите, какому столбцу таблицы истинности функции F соответствует каждая из пере-
менных X, у, Z.
Перем. 1 Перем.2 Перем. 3 Функция
??? ??? ??? F
0 0 0 1
1 0 0 1
1 1 0 1
1 1 1 1
В ответе напишите буквы х, у, г в том порядке, в котором идут соответствующие им столбцы
(сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая второ-
му столбцу; затем — буква, соответствующая третьему столбцу). Буквы в ответе пишите под-
ряд, никаких разделителей между буквами ставить не нужно.
Пример. Пусть задано выражение х -> у, зависящее от двух переменных х и у, и таблица
истинности:
Перем. 1 Перем. 2 Функция
??? ??? F
0 0 1
0 1 0
1 0 1
1 1 1
Тогда первому столбцу соответствует переменная у, а второму столбцу — переменная х.
В ответе нужно написать: ух.
Ответ:
3
Между населёнными пунктами А, В, С, D, Е, F построены дороги, протяженность которых
приведена в таблице. (Отсутствие числа в таблице означает, что прямой дороги между пункта-
ми нет.)
А В С D Е F
А 7 2
В 7 4 2 2 4
С 2 4 5 1
D 2 5 4 3
Е 2 1 4 8
F 4 3 8
Определите длину кратчайшего пути между пунктами А и F (при условии, что передвигать-
ся можно только по построенным дорогам).
Ответ:.
4
Для групповых операций с файлами используются маски имён файлов. Маска представ-
ляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов,
в которых также могут встречаться следующие символы:
Символ «?» (вопросительный знак) означает ровно один произвольный символ.
Символ «*» (звёздочка) означает любую последовательность символов произвольной дли-
ны, в том числе «*» может задавать и пустую последовательность.
Определите, какие из указанных имён файлов удовлетворяют маске: ?si*?.??*
1) Osina.com 2) psycho, txt
3)Osip.doc
4)asis.c
В ответе перечислите номера файлов в порядке возрастания без пробелов и знаков препи-
нания.
Ответ:.
5 Для кодирования некоторой последовательности, состоящей из букв А, Б, В, Г, Д, Е, Ж,
решили использовать неравномерный двоичный код, удовлетворяющий условию Фано. Для
буквы А использовали кодовое слово 10; для буквы Б — кодовое слово 01. Какова наименьшая
возможная сумма длин всех семи кодовых слов?
Примечание. Условие Фано означает, что никакое кодовое слово не является началом дру-
гого кодового слова. Это обеспечивает возможность однозначной расшифровки закодирован-
ных сообщений.
Ответ:.
6
У исполнителя Утроитель две команды, которым присвоены номера:
1. умножь на 3,
2. прибавь 2.
Первая из них утраивает число на экране, вторая — увеличивает его на 2.
Запишите порядок команд в программе преобразования числа 4 в число 66, содержащей
не более 5 команд, указывая лишь номера команд. (Например, 21211 — это программа
прибавь 2
умножь на 3
прибавь 2
умножь на 3
умножь на 3,
которая преобразует число 1 в 66.)
(Если таких программ более одной, то запишите любую из них.)
Ответ:.
7
Дан фрагмент электронной таблицы:
А в С D
1 3 5
2 =С1-3 =(А1+С1)/2 =А1/3 =(В1+А2)/2
Какое число должно быть записано в ячейке В1, чтобы построенная после выполнения
вычислений диаграмма по значениям диапазона ячеек A2:D2 соответствовала рисунку?
Ответ: •
8
Определите, что будет напечатано в результате выполнения следующего фрагмента про-
граммы:
Бейсик Паскаль
DIM k, s AS INTEGER к = 3 s = 4 WHILE s < 34 s ~ s + 5 к = к * 2 WEND PRINT к var k, s : integer; begin к := 3; s : = 4; while s < 34 do begin s : = s + 5; к := к * 2 end; write (к); end.
Си Алгоритмический язык
{ int к, s; к = 3; s = 4; while (s < 34) { s = s + 5 ; к = к ★ 2; ) printf("%d", k); ) нач цел k, s k := 3 s : = 4 нц пока s < 34 s : = s + 5 k := k * 2 КЦ вывод k KOH
Ответ: ,
9 Музыкальный фрагмент был записан в формате 7.1 (восьмиканальная запись), оцифро-
ван и сохранен в виде файла без использования сжатия данных. Размер полученного файла —
48 Мбайт. Затем тот же музыкальный фрагмент был оцифрован повторно в формате стерео
(двухканальная запись) и оцифрован с разрешением в 1,5 раза меньше и частотой дискрети-
зации в 2 раза больше, чем в первый раз. Сжатие данных не производилось. Укажите размер
файла в Мбайт, полученного при повторной записи. В ответе запишите только целое число,
единицу измерения писать не нужно.
Ответ:;.
10 Для записи результатов соревнований используется таблица, в которой для каждой из
20-ти команд по каждому из 10-ти видов состязаний записано 1,2 или 3 (если команда заняла
соответствующее место в этом состязании) или прочерк (если не заняла призовое место или
не участвовала). Какое количество информации (бит) содержит таблица?
Ответ:
11 Определите, сколько звёздочек будет напечатано в результате вызова F(7) приведённой под-
программы:
Бейсик Паскаль
SUB F(n) IF П > 1 THEN PRINT F (n - 1) F(n \ 2) END IF END SUB procedure F(n: integer); begin if n > 1 then begin write ('*'); F(n - 1) ; F(n div 2) end end;
Си Алгоритмический язык
void F(int n) if (n > 1) [ printf ("*"); F(n - 1) ; F(n / 2) ; ) } алг Г(цел п) нач если п > 1 то ВЫВОД 1 * ’ F(n - 1) F(div(n, 2)) все кон
Ответ:,
12 В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая
часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети.
Обычно маска записывается по тем же правилам, что и 1Р-адрес, — в виде четырёх байтов,
причём каждый байт записывается в виде десятичного числа.
При этом в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого разря-
да — нули.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному
IP-адресу узла и маске.
Например, если IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0, то адрес
сети равен 231.32.240.0.
Для узла с IP-адресом 83.242.102.102 адрес сети равен 83.242.96.0.
Чему равно наименьшее возможное значение третьего слева байта маски?
Ответ запишите в виде десятичного числа.
Ответ:.
13 В некоторой стране автомобильный номер состоит из 7 символов: сначала 2 буквы, затем
3 цифры, затем ещё 2 буквы. При этом буквы могут быть выбраны только из 12 строчных букв
местного алфавита. Среди цифр не используются цифры 6 и 9.
Автоматизированная система хранит номера автомобилей следующим образом. Исполь-
зуется посимвольное кодирование и в памяти системы для кодирования каждого символа ис-
пользуется минимально возможное и одинаково целое количество бит. А для хранения всего
пароля используется минимально возможное целое количество байт.
Какое количество информации (в байтах) требуется для хранения номеров 160 автомо-
билей?
Ответ:..
14
15
16
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может
выполнять две команды, в обеих командах vniv обозначают цепочки цифр.
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например,
выполнение команды
заменить (222,34)
преобразует строку 77222277 в строку 7734277.
Если в строке нет вхождений цепочки V, то выполнение команды заменить (v, w) не меняет
эту строку.
Б) нашлось (v).
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она
встречается, то команда возвращает логическое значение «истина», в противном случае воз-
вращает значение «ложь». Строка исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда!
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда! (если условие истинно) или команда2 (если условие ложно).
Какая строка получится в результате применения приведённой ниже программы к строке,
состоящей из 61 идущих подряд цифр 1?
В ответе запишите полученную строку.
НАЧАЛО
ПОКА нашлось (111) ИЛИ нашлось (666)
ЕСЛИ нашлось (111)
ТО заменить (111, 6)
ИНАЧЕ заменить (666, 1)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Ответ:.
На рисунке — схема дорог, связывающих города
А, Б, В, Г, Д, Е, Ж, 3, И, К.
По каждой дороге можно двигаться только в од-
ном направлении, указанном стрелкой.
Сколько существует различных путей из города А
в город К?
Ответ:.
Запись десятичного числа в системах счисления с основаниями 4 и 7 в обоих случаях имеет
последней цифрой 0. Какое минимальное натуральное десятичное число удовлетворяет этому
требованию?
Ответ:
17
18
В языке запросов к поисковому серверу для обозначения логической операции «ИЛИ» ис-
пользуется символ «|», а для логической операции «И» — «&». В таблице приведено количе-
ство страниц, которое находит поисковая система по каждому запросу.
Запрос Количество найденных страниц (в тысячах)
Стекло 26
Бетон 25
Кирпич 31
Стекло & Бетон 10
Стекло & Кирпич 16
Бетон & Кирпич 12
Стекло & Бетон & Кирпич 3
Какое количество страниц (в тысячах) будет найдено этой поисковой системой по запросу
Стекло | Бетон | Кирпич ?
Ответ:.
Какие из приведённых имён удовлетворяют логическому условию
(последняя буква гласная -> вторая буква согласная) Д первая буква согласная
1) ВЛАДА
2) АЛИСА
3) МАРИЯ
4) РУСТАМ
5) АРТУР
В ответе перечислите номера имён в порядке возрастания без пробелов и знаков препина-
ния.
Ответ:.
19 В программе используется целочисленный массив А с индексами от 0 до 9. Значения эле-
ментов массива равны 4; 5; 4; 7; 10; 8; 9; 1.1; 7; 8 соответственно, т. е. А[0] = 4; А[1] = 5 и т. д.
Определите значение переменной k после выполнения следующего фрагмента программы,
записанной ниже на разных языках программирования.
Бейсик Паскаль
к = 10 FOR i = 0 ТО 8 IF A(9-i) > A(8-i) THEN A(8-i) = A(9-i) к = k l ENDIF NEXT i к := 10; for i := 0 to 8 do if A[9-i] > A[8-i] then begin A[8-i] := A[9-i]; к := к - 1; end;
Си Алгоритмический язык
к = 10; for (i = 0 ; i <= 8 ; i++) if (A[9-i] > A[8-i]) { A[8-i] = A[9-i]; к = к - 1; } k := 10 нц для i от 0 до 8 если A[9-i] > A[8-i] ТО A[8-i] := A[9-i] k := k - 1 все кц
Ответ:,
20
Ниже на четырёх языках записан алгоритм. Получив на вход число х, этот алгоритм печата-
ет число М. Укажите наибольшее число х, при вводе которого алгоритм печатает 7.
Бейсик Паскаль
DIM X, М AS INTEGER INPUT X М = 0 WHILE X > 0 М = М + 1 IF X MOD 2 О 0 THEN X = X - 1 ENDIF X = X \ 2 WEND PRINT M var x, M: integer; begin readln(x); M := 0; while x > 0 do begin M := M + 1; if x mod 2 <> 0 then x := x - 1; x := x div 2 end; write(M) end.
Си Алгоритмический язык
#include<stdio.h> void main() { int x, M; scanf("%d", &x); M = 0; while (x > 0){ M = M + 1; if(x % 2 1= 0) x = x - 1; x = x / 2; } printf("%d", M); } алг нач цел х, М ввод X М := 0 нц пока х > 0 М := М + 1 если mod(x,2) О 0 то х := х - 1 все х := div(х,2) кц вывод М КОН
Ответ:.
21
Ниже на четырёх языках представлен алгоритм. Определите, при скольких значениях Ь на
экран будет выведено такое же число, как и при Ь = 100 (включая Ь = 100).
Бейсик Паскаль
DIM А, В AS INTEGER var a,b : integer;
INPUT В function F(x : integer) : integer;
А = 0 begin
WHILE F(A) < В if x = 0 then
А = А + 1 F := 1
WEND else
PRINT А F := 2 * F(x-l)
end;
FUNCTION F (х) BEGIN
IF х = 0 readln (b);
F = 1 a : = 0;
ELSE while F(a) < b do
F = 2 * F(x-l) begin
END IF a : = a + 1
END FUNCTION end;
write(a)
END.
Си Алгоритмический язык
int F(int х) { if (х == 0) return 1; else return 2 * F(x—1); } void main() { int a, b; scanf("%d",&b); a = 0; while (F(a) < b) { a = a + 1 ; } printf("%d", a); } алг нач цел а, Ь ввод Ь а : = 0 нц пока F(а) < b а : = а + 1 кц вывод а КОН алг цел F(цел х) нач если х = 0 то знач := 1 иначе знач := 2 * F(x-l) КЦ кон
Ответ: .
22 У исполнителя Прибавлятель три команды, которым присвоены номера:
1. прибавь 1,
2. прибавь 2,
3. прибавь 5.
Первая из них увеличивает число на экране на 1, вторая — на 2, третья — на 5.
Программа для Прибавлятеля — это последовательность команд.
Сколько есть программ, которые число 2 преобразуют в число 10?
Ответ:.
23 Сколько существует различных наборов значений логических переменных хр х2, ... х9, х10,
которые удовлетворяют всем перечисленным ниже условиям?
(х^ V^2) А(*з = 0
(x3V^4)A(x5V^x6) = 0
(x6 V^x6)A(x7V^x8) = 0
(x7 V A (x9 V -x10) = 0
В ответе не нужно перечислять все различные наборы значений хр х2, ... х9, х10, при кото-
рых выполнена данная система равенств.
В качестве ответа вам нужно указать количество таких наборов.
Ответ:.
Не забудьте перенести все ответы в бланк ответов № 1 в соответствии с инструкцией
по выполнению работы.
Часть 2
Для записи ответов на задания этой части (24—27) используйте БЛАНК ОТВЕТОВ № 2.
Запишите сначала номер задания (24, 25 и т. д.), а затем полное решение. Ответы записы-
вайте чётко и разборчиво.
24
Требовалось написать программу, которая вводит с клавиатуры последовательность из
п целых чисел (и = 4), и выводит на экран порядковый номер первого отрицательного числа
этой последовательности. Если в последовательности нет отрицательных чисел, программа
должна вывести на экран «NO». Известно, что вводимые числа не превышают по модулю 1000.
Программист торопился и написал программу неправильно.
Паскаль Бейсик
const п = 4; var i, a, num: integer; begin num := 0; for i := 1 to n do begin read (a) ; if a < 0 then num := a end; if num <> 0 then writein(num) else writein('NO') end. CONST N = 4 DIM I, A, NUM AS INTEGER NUM := 0 FOR I = 1 TO N INPUT A IF A < 0 THEN NUM = A END IF NEXT I IF NUM <> 0 THEN PRINT NUM ELSE PRINT "NO" END IF END
Си Алгоритмический язык
#include<stdio.h> #define n 4 int main() < int i, a, num; num = 0; for (i = 0 ; i < n ; i + +) { scanf("%d", &a); if(a < 0) num = a; } if(num <> 0) printf("%d", num); else print("NO"); } алг нач цел п = 4 цел a, i, num num := 0 нц для i от 1 до п ввод а если а < 0 ТО num : = а все кц если num о 0 то вывод num иначе вывод 'NO' все кон
Выполните следующие действия:
1. Напишите, что выведет программа при вводе чисел -1 -2 -3 -4.
2. Приведите пример такой входной последовательности, при которой программа работает
верно.
3. Укажите все ошибки в программе и исправьте их. Для этого для каждой ошибки:
выпишите строку, которая написана неправильно и приведите правильный вариант
строки.
25
Дан целочисленный массив из 40 элементов. Элементы массива могут принимать значе
ния от -10000 до 10000. Опишите на русском языке или на одном из языков программиро-
вания алгоритм, который находит и выводит пару с наименьшей суммой среди непересека-
ющихся пар соседних элементов. То есть, первая пара — 1-й и 2-й элементы, вторая пара —
3-й и 4-й элементы, и т. д. На языке Си, соответственно, первая пара — 0-й и 1-й элементы,
2-я пара — 2-й и 3-й элементы, и т. д.
Исходные данные объявлены так, как показано ниже. Запрещается использовать перемен-
ные, не описанные ниже, но разрешается не использовать часть из них.
Паскаль Бейсик
const N = 40; var a: array [1..N] of integer; i, j, min: integer; begin for i := 1 to N do readln(a[i]); end. N = 40 DIM A(N) AS INTEGER DIM I, J, MIN AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I END
СИ Алгоритмический язык
^include <stdio.h> ^define N 40 void main(void) {int a[N]; int i, j, min; for (i =0; i < N; i++) scanf("%d”, &a[i] ) ; } алг нач цел N = 40 целтаб а [ 1: N ] цел i, j, min нц для i от 1 до N ввод a[i] КЦ кон
Русский (естественный) язык
Объявляем массив А из 40 элементов. Объявляем целочисленные переменные I, J, MIN. В цикле от 1 до 40 вводим элементы массива А с 1-го по 40-й.
В качестве ответа вам необходимо привести фрагмент программы (или описание алгоритма
на естественном языке), который должен находиться на месте многоточия. Вы можете запи-
сать решение также на другом языке программирования (укажите название и используемую
версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом
случае вы должны использовать те же самые исходные данные и переменные, какие были пред-
ложены в условии (например, в образце, записанном на естественном языке).
26 Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит две кучи кам-
ней. Игроки ходят по очереди, первый ход делает Петя. Назовём позицией игры указание ко-
личества камней в обеих кучах. Например, позиция (15,20) означает, что в первой куче 15 кам-
ней, а во второй — 20. За один ход игрок может добавить в одну из куч один камень или увели-
чить количество камней в одной из куч в два раза. Например, имея количество камней в кучах
(15,20), за один ход можно получить положение (16,20), (30,20), (15,21) и (15,30). У каждого
игрока, чтобы делать ходы, есть неограниченное количество камней.
Игра завершается в тот момент, когда количество камней в обеих кучах (сумма) становится
не менее 58. Победителем считается игрок, сделавший последний ход, то есть первым получив-
ший положение, в котором сумма камней в кучах будет 58 или больше камней.
Говорят, что игрок имеет выигрышную стратегию, если он может выиграть при любых хо-
дах противника. Описать стратегию игрока — значит описать, какой ход он должен сделать
в любой ситуации, которая ему может встретиться при различной игре противника. Например,
при начальных позициях (8,25), (7,26), (10,24) выигрышная стратегия есть у Пети. Чтобы вы-
играть, ему достаточно удвоить количество камней во второй куче.
Выполните следующие задания. Во всех случаях обосновывайте свой ответ.
1. Для исходных позиций (7,25) и (9,24) укажите, кто из игроков выигрывает. Сколько
ходов необходимо для выигрыша? Опишите выигрышную стратегию. Обоснуйте ответ.
2. Для исходных позиций (6,25), (8,24) и (9,23) укажите, кто из игроков выигрывает. Сколь-
ко ходов необходимо для выигрыша? Опишите выигрышную стратегию. Обоснуйте ответ.
3. Для исходной позиции (8,23) укажите, кто из игроков выигрывает. Сколько ходов необ-
ходимо для выигрыша? Опишите выигрышную стратегию. Приведите дерево игры. Обоснуйте
ответ. На рёбрах дерева указывайте, кто делает ход, в узлах — позицию игры.
27 После единых выпускных экзаменов по информатике в район пришла информация о том,
какой ученик какой школы сколько баллов набрал.
Районный методист решила выяснить номера школ, ученики которых набрали средний
балл по школе, больший, чем районный средний балл (все средние баллы вычисляются с точ-
ностью до целых).
Программа должна вывести на экран номера таких школ, в любом порядке.
Если такая школа окажется только одна — вывести также средний балл по этой школе,
с указанием, что это средний балл.
Напишите эффективную, в том числе и по используемой памяти, программу (укажите ис-
пользуемую версию языка программирования, например, Borland Pascal 7.0), которая должна
вывести на экран требуемую информацию. Известно, что информатику сдавало больше 5-ти
учеников района. Также известно, что в районе школы с некоторыми номерами не существуют.
На вход программе сначала подаётся число учеников, сдававших экзамен. В каждой из сле-
дующих N строк находится информация об учениках в формате:
<Фамилия> <Имя> <Номер школы> <Количество баллов> ,
где <Фамилия> — строка, состоящая не более, чем из 30 символов без пробелов, <Имя> —
строка, состоящая не более, чем из 20 символов без пробелов, <Номер школы> — целое число
в диапазоне от 1 до 99, сКоличество баллов> — целое число диапазоне от 1 до 100. Эти данные
записаны через пробел, причём ровно один между каждой парой (то есть, всего по три пробела
в каждой строке).
Пример входной строки:
Иванов Иван 50 87
Пример выходных данных:
5 50 74 87
Другой вариант выходных данных:
7
Средний балл =74
ВАРИАНТ 8
Часть 1
Ответами к заданиям 1—23 являются число, последовательность букв или цифр, кото-
рые следует записать в БЛАНК ОТВЕТОВ № 1 справа от номера соответствующего зада-
ния, начиная с первой клеточки, без пробелов, запятых и других дополнительных симво-
лов. Каждый символ пишите в отдельной клеточке в соответствии с приведёнными в бланке
образцами.
Сколько чисел находится между 275g и 304g?
Ответ:.
2
Дан фрагмент таблицы истинности выражения F. Значения в пустых клетках таблицы
неизвестны и могут быть любыми из возможных.
*1 Х2 *3 F
1 1 1
0 0 0
1 1 1
Перечислите в порядке возрастания без запятых и пробелов номера логических выраже-
ний, которые могут соответствовать F:
1) -xt\Jx2\J^x3
2) xrAx2Ax3
3) xxf\x2f\^x3
4) х1\/х2\/х3
5) xxf\x2\Jx2
Ответ:__________________________________________________________________________________
3
Между населёнными пунктами А, В, С, D, Е, F построены дороги, протяжённость которых
приведена в таблице. (Отсутствие числа в таблице означает, что прямой дороги между пункта-
ми нет.)
S
Определите длину кратчайшего пути между пунктами А и F (при условии, что передвигать-
ся можно только по построенным дорогам).
Ответ:.
4 Дан фрагмент базы данных, содержащий информацию о родственных отношениях. Опреде-
лите на количество потомков Ирита Е.О, упомянутых в таблице.
Таблица 1
ID Фамилия И.О. Пол
1518 Гираб В. А. М
1885 Жуйко А. И. м
2946 Калпен Л.В. м
3472 Арно В.А. /IV
4705 Иваненко И.Л. м
5624 Ирита Е.О. /IV
6109 Кирта У.Т. ZlV
7296 Олинг К.Л. •vtt* /IV
8434 Кименко З.Т. ZlV
9657 Вирк Я.М. •vtt* /IV
...
Ответ:
Таблица 2
ЮРодителя ГО_Ребёнка
1885 3472
6109 3472
9657 1885
4705 1885
2946 4705
5624 4705
8434 2946
1518 2946
2946 7296
5624 7296
... ...
5 Для передачи информации по каналу связи с помехами используется 5-битовый код. Сооб-
щение содержит только буквы А, В и С, которые кодируются следующими кодовыми словами:
А-10101, В-10010, С-01110.
Любые два из этих трёх кодовых слов отличаются не менее чем в трех позициях. Поэтому,
если принятое кодовое слово отличается от допустимого не более чем в одной позиции, можно
однозначно определить, какая буква передавалась (говорят, что «код исправляет одну ошиб-
ку»).
Так, получив кодовое слово 10000, можно догадаться, что передавалась буква В (отличие от
кодового слова для В только в одной позиции, для остальных кодовых слов отличий больше).
Если принятое кодовое слово отличается от всех допустимых кодовых слов более, чем в одной
позиции, считается, что произошла ошибка (она обозначается «х»)
Получено сообщение 00101 11010 11110 10111. Декодируйте это сообщение.
В ответе укажите четыре символа без пробелов и запятых.
Ответ:.
6 Автомат получает на вход трёхзначное число. По этому числу строится новое число по сле-
дующим правилам.
1. Складываются отдельно первая и вторая цифры, а также — вторая и третья цифры.
2. Полученные два числа записываются друг за другом в порядке неубывания без раздели-
телей.
Пример. Исходное число: 179. Суммы: 1 + 7 = 8; 7 + 9 = 16. Результат: 816.
Укажите наименьшее число, при обработке которого автомат выдаёт результат 156.
Ответ:.
7
Дан фрагмент электронной таблицы:
А В С D
1 6
2 =D2-B1 =В1/2 =А1-В2 =А1+В1/2
Какое число должно быть записано в ячейке В1, чтобы построенная после выполнения вы-
числений диаграмма по значениям диапазона ячеек A2:D2 соответствовала рисунку?
Ответ:.
8
Определите, что будет напечатано в результате выполнения следующего фрагмента про
граммы:
Бейсик Паскаль
DIM k, s AS INTEGER к - 50 3 = 2 WHILE s < 1000 s = s * 2 к = к - 3 WEND PRINT к var k, s : integer; begin к := 50; s : = 2 ; while s < 1000 do begin s : = s * 2; к := к - 3 end; write(k); end.
Си Алгоритмический язык
{ int к, s; к = 50; s = 2; while (s < 1000) { s = s * 2 ; к = к - 3; } printf("%d", k); } нач цел k, s k := 50 s := 2 нц пока s < 1000 s : = s * 2 k := k - 3 КЦ вывод k KOH
Ответ:__________________________________________________________________________________
9 Документ объёмом 4 Мбайта можно передать с одного компьютера на другой двумя спосо-
бами:
А. Сжать архиватором, передать по каналу связи, распаковать.
Б. Передать по каналу связи без использования архиватора.
Какой способ быстрее и на сколько, если:
• средняя скорость передачи данных по каналу связи составляет 218 бит в секунду;
• объем сжатого архиватором документа равен 50% исходного;
• время, требуемое на сжатие документа, — 20 секунд, на распаковку — 5 секунд?
В ответе напишите букву А, если быстрее способ А, или Б, если быстрее способ Б. Сразу
после буквы напишите число, обозначающее, на сколько секунд один способ быстрее другого.
Так, например, если способ Б быстрее способа А на 23 секунды, в ответе нужно написать
Б23.
Единиц измерения «секунд», «сек.», «с.» к ответу добавлять не нужно.
Ответ:
10
11
Эллочка людоедка (в лексиконе которой, как известно, было всего 30 слов) произносит фра-
зу, состоящую из 10 слов. Какое количество информации (количество бит) сообщает Эллочка?
Ответ:________________________________________________________________________________•
Определите, сколько звёздочек будет напечатано в результате вызова F(l) приведённой под-
программы:
Бейсик Паскаль
SUB F(n) PRINT "*"; IF n < 6 THEN F(n + 2) F(n + 1) END IF END SUB procedure F(n: integer); begin write('*'); if n < 6 then begin F (n + 2) ; F(n + 1) end end;
Си Алгоритмический язык
void F(int n) { printf("*"); if (n < 6) { F(n + 2) ; F(n + 1) ; } } алг F(цел n) нач вывод ’*' если п < 6 то F (п + 2) F (п + 1) все кон
Ответ:.
12 В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая
часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети.
Обычно маска записывается по тем же правилам, что и 1Р-адрес, — в виде четырёх байтов, при-
чём каждый байт записывается в виде десятичного числа. При этом в маске сначала (в старших
разрядах) стоят единицы, а затем с некоторого разряда — нули.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному
IP-адресу узла и маске.
Например, если IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0, то адрес
сети равен 231.32.240.0.
Для узла с IP-адресом 205.183.139.102 адрес сети равен 205.183.128.0. Чему равно наиболь-
шее возможное значение третьего слева байта маски? Ответ запишите в виде десятичного числа.
Ответ:.
13 Репетиционный экзамен в некоем регионе сдают 9 потоков по 100 человек в каждом. Каж-
дому из них выделяют специальный код, состоящий из номера потока и номера в потоке. При
кодировании этих номеров участников проверяющая система использует минимально возмож-
ное количество бит, одинаковое для каждого участника, отдельно номер потока и номер в пото-
ке. При этом для записи кода используется минимально возможное и одинаково целое количе-
ство байтов. Каков объём информации (в байтах), записанный устройством после регистрации
80 участников?
Ответ:.
14
15
16
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может
выполнять две команды, в обеих командах и и w обозначают цепочки цифр.
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку и>. Например,
выполнение команды
заменить (222, 34)
преобразует строку 77222277 в строку 7734277.
Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет
эту строку.
Б) нашлось (v).
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она
встречается, то команда возвращает логическое значение «истина», в противном случае воз-
вращает значение «ложь». Строка исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда!
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда! (если условие истинно) или команда2 (если условие ложно).
Какая строка получится в результате применения приведенной ниже программы к строке,
состоящей из 70 идущих подряд цифр 5? В ответе запишите полученную строку.
НАЧАЛО
ПОКА нашлось (555) ИЛИ нашлось (444)
ЕСЛИ нашлось (555)
ТО заменить (555, 4)
ИНАЧЕ заменить (444, 5)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Ответ:.
На рисунке — схема дорог, связывающих города
А, Б, В, Г, Д, Е, Ж, 3, И, К.
По каждой дороге можно двигаться только в од-
ном направлении, указанном стрелкой.
Сколько существует различных путей из горо-
да А в город К?
Ответ:.
Какое восьмеричное число находится ровно посередине между числами 101101012 и С316?
В ответе напишите только само число в 8-ричной системе счисления. Основание системы счис-
ления писать не нужно.
Ответ:
17
В языке запросов к поисковому серверу для обозначения логической операции «ИЛИ» ис-
пользуется символ «|», а для логической операции «И» — «&». В таблице приведено количе-
ство страниц, которое находит поисковая система по каждому запросу.
Запрос Количество найденных страниц (в тысячах)
Ангара 24
Лена 31
Енисей 19
Ангара & Лена 21
Ангара & Енисей 14
Лена & Енисей 17
Ангара | Лена | Енисей 35
Какое количество страниц (в тысячах) будет найдено этой поисковой системой по запросу
Ангара & Лена & Енисей ?
Ответ:.
18 Для какого целого числа X ложно высказывание: ((X > 1) -> (X > 3)) V(X = 3)?
Ответ: _________________________________________________________________________________
19
В программе используется целочисленный массив А с индексами от 0 до 9. Значения эле-
ментов массива равны 4; 5; 7; 7; 10; 8; 9; 11; 7; 6 соответственно, т. е. А[0] = 4; А[1] = 5 и т. д.
Определите значение переменной k после выполнения следующего фрагмента программы,
записанной ниже на разных языках программирования.
Бейсик Паскаль
к = 0 FOR i = 0 ТО 4 IF A(2*i) >= A(2*i+1) THEN к = к + 1 t = A(2*i) A(2*i) = A(2*i+1) A(2*i+1) = t NEXT i к := 0; for i := 0 to 4 do if A[2*i] >= A[2*i+1] then begin к := к + 1; t := A[2*i]; A[2*i] := A[2*i+1]; A[2*i+1] := t end;
Си Алгоритмический язык
к = 0; for (i=0 ; i<=4 ; i++) if (A[2*i] >= A[2*i+1]) { к = к + 1; t = A[2*i]; A[2*i] = A[2*i+1]; A[2*i+1] = t; ) + гН к -н 04 * ' С4 4-1 — < II о| II «-Ч -н Ц| А * || + 04 • -н ле < — + Е-*1 + -н -н О| 04 II II * * — • •• 04 04 н < — — ле U < < CD 1 о mix о| и Ч д) II о •• ф ле х| х!
Ответ:
20
21
Ниже на четырёх языках записан алгоритм. Получив на вход число х, этот алгоритм пе-
чатает два числа L и М. Укажите наименьшее число х, при вводе которого алгоритм печатает
сначала 2, а потом 4.
Бейсик Паскаль
DIM X, L, М AS INTEGER INPUT X L = 0 M = 0 WHILE X > 0 M = M + 1 IF X MOD 4 > 1 THEN L = L + 1 ENDIF X = X\4 WEND PRINT L PRINT M var x, L, M: integer; begin readln(x); L := 0; M := 0; while x > 0 do begin M := M + 1; if x mod 4 > 1 then L := L + 1; x := x div 4 end; writein(L); write(M) end.
Си Алгоритмический язык
#include<stdio.h> void main() { int x, L, M; scanf("%d", &x); L = 0; M = 0; while (x > 0){ M = M + 1; if(x%4 > 1){ L = L + 1; } x = x/4; } printf("%d\n%d", L, M) ; } алг нач цел х, L, М ВВОД X L := 0 М := 0 нц пока х > 0 М := М + 1 если mod(x,4) > 1 ТО L := L + 1 все х := div(x,4) кц вывод L, нс, М кон
Ответ:__________________________________________________________________________________
Определите, при каком наибольшем значении b в результате выполнения следующего алгорит-
ма будет напечатано число 15 (для Вашего удобства алгоритм представлен на четырёх языках):
Бейсик Паскаль
DIM А, В AS INTEGER INPUT В А = 0 WHILE А < F(В) А = А + 1 WEND PRINT А FUNCTION F (х) IF х < 0 F = -1 ELSE F = F(x-4) + 1 END IF END FUNCTION var a, b : integer; function F(x : integer) : begin if x < 0 then F := -1 else F := F(x-4) + 1 end; BEGIN readln (b) ; a : = 0 ; while a < F(b) do begin a : = a + 1 end; write(a) END. integer;
Си Алгоритмический язык
int F(int х) алг
{ нач
if (х < 0) цел а, b
return -1; ввод b
else а : = 0
return F(x-4) + 1; нц пока а < F(Ь)
} а : = а + 1
void main() кц
{ вывод а
int a, b; scanf("%d",&b); кон
a = 0; алг цел Е(цел х)
while (a < F(b)) нач
{ если х < 0
a = a + 1; ТО
) знач := -1
printf("%d", a); иначе
} знач := F(x-4) + 1 КЦ кон
Ответ:,
22 Исполнитель Июнь15 преобразует число на экране.
У исполнителя есть две команды, которым присвоены номера:
1. Прибавить 1
2. Умножить на 2
Первая команда увеличивает число на экране на 1, вторая умножает его на 2.
Программа для исполнителя Июнь 15 — это последовательность команд.
Сколько существует программ, для которых при исходном числе 2 результатом является чис-
ло 34 и при этом траектория вычислений содержит число 12?
Траектория вычислений программы — это последовательность результатов выполнения
всех команд программы. Например, для программы 121 при исходном числе 7 траектория будет
состоять из чисел 8, 16, 17.
Ответ:.
23 Сколько существует различных наборов значений логических переменных хр х2, ... х9, х10,
которые удовлетворяют всем перечисленным ниже условиям?
(Д V -> (хз V = 1
(х3 V -’Х4) -» (Х5 v ”Xe) = 1
(*5 V -’Xg) (х7 V -’Х8) = 1
(x7V^8)->(*9V-x10) = 1
В ответе не нужно перечислять все различные наборы значений хр х2, ... х9, х10, при ко-
торых выполнена данная система равенств. В качестве ответа вам нужно указать количество
таких наборов.
Ответ:.
Не забудьте перенести все ответы в бланк ответов № 1 в соответствии с инструкцией
по выполнению работы.
Часть 2
Для записи ответов на задания этой части (24—27) используйте БЛАНК ОТВЕТОВ № 2.
Запишите сначала номер задания (24, 25 и т. д.), а затем полное решение. Ответы записы-
вайте чётко и разборчиво.
24
Требовалось написать программу, при выполнении которой с кла-
виатуры считываются координаты точки на плоскости (х, у — действи-
тельные числа) и определяется принадлежность этой точки заданной
закрашенной области (включая границы). Программист торопился и
написал программу неправильно.
Паскаль Бейсик
var х, у: real; begin readln(х,у); if у <= х then if у <= -х then if у >= x*x - 2 then write(1 принадлежит') else write('не принадлежит’) end. INPUT x, у IF у <- X THEN IF у <= -X THEN IF у >= x*x - 2 THEN PRINT "принадлежит" ELSE PRINT "не принадлежит" ENDIF ENDIF ENDIF END
Си Алгоритмический язык
void main(void) { float x, y; scanf("%f%f",&x,&y); if (y <= X) if (y <= —x) if (y >= x*x - 2) printf("принадлежит"); else printf("не принадлежит”); ) алг нач вещ х, у ввод х, у если у <= х то если у <= -х то если у >= х*х - 2 то вывод ’принадлежит’ иначе вывод •не принадлежит' все все все кон
Последовательно выполните следующее.
1. Перерисуйте и заполните таблицу, которая показывает,
как работает программа при аргументах, принадлежащих раз-
личным областям (А, В, С, D, Е, F, G, Н и I).
Точки, лежащие на границах областей, отдельно не рассма-
тривать.
Область Условие 1 (У<=х) Условие 2 (у<= -X) Условие 3 (у>=х*х—2) Программа выведет Область обрабатывается верно
А
В
С
D
Е
F
G
Н
I
В столбцах условий укажите «да», если условие выполнится, «нет» если условие не вы-
полнится, « — » (прочерк), если условие не будет проверяться, «не изв.», если программа ведёт
себя по-разному для разных значений, принадлежащих данной области. В столбце «Програм-
ма выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, на-
пишите « — » (прочерк). Если для разных значений, принадлежащих области, будут выведены
разные тексты, напишите «не изв». В последнем столбце укажите «да» или «нет».
2. Укажите, как нужно доработать программу, чтобы не было случаев её неправильной ра-
боты. (Это можно сделать несколькими способами, достаточно указать любой способ доработки
исходной программы.)
25 Дан целочисленный массив из 40 элементов. Элементы массива могут принимать значения
от -10000 до 10000. Опишите на русском языке или на одном из языков программирования
алгоритм, который находит и выводит произведение нечётных положительных элементов мас-
сива. Если таких элементов нет, вывести на экран 1.
Исходные данные объявлены так, как показано ниже. Запрещается использовать перемен-
ные, не описанные ниже, но разрешается не использовать часть из них.
Паскаль Бейсик
const N = 40; var a: array [1..N] of integer; i, j, p: integer; begin for i:=l to N do readln(a[i]); end. N = 40 DIM A(N) AS INTEGER DIM I, J, P AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I END
СИ Алгоритмический язык
♦include <stdio.h> ♦define N 40 void main(void) { int a[N]; int i, j, p; for (i = 0; i < N; i++) scanf("%d", &a[i] ); } алг нач цел N = 40 целтаб a[l:N] цел i, j, р нц для i от 1 до N ввод a[i] КЦ кон
Русский (естественный) язык
Объявляем массив А из 40 элементов.
Объявляем целочисленные переменные I, J, Р.
В цикле от 1 до 40 вводим элементы массива А с 1-го по 40-й.
В качестве ответа вам необходимо привести фрагмент программы (или описание алгоритма
на естественном языке), который должен находиться на месте многоточия. Вы можете запи-
сать решение также на другом языке программирования (укажите название и используемую
версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом
случае вы должны использовать те же самые исходные данные и переменные, какие были пред-
ложены в условии (например, в образце, записанном на естественном языке).
26
Два игрока, Петя и Ваня, играют в следующую игру.
Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя.
За один ход игрок может добавить в одну из куч (по своему выбору) один камень или увели-
чить количество камней в куче в два раза. Например, пусть в одной куче 10 камней, а в другой
7 камней; такую позицию в игре будем обозначать (10, 7).
Тогда за один ход можно получить любую из четырёх позиций: (11, 7), (20, 7), (10,8), (10,14).
Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней.
Игра завершается в тот момент, когда суммарное количество камней в кучах становится
не менее 30.
Победителем считается игрок, сделавший последний ход, то есть первым получивший такую
позицию, что в кучах всего будет 30 или больше камней.
В начальный момент в первой куче было 4 камня, во второй куче — S камней;
1<S^25.
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при лю-
бых ходах противника. Описать стратегию игрока — значит описать, какой ход он должен сде-
лать в любой ситуации, которая ему может встретиться при различной игре противника.
Выполните следующие задания. Во всех случаях обосновывайте свой ответ.
Задание 1
а. Укажите все такие значения числа S, при которых Петя может выиграть за один ход, и со-
ответствующие выигрывающие ходы. Если при некотором значении S Петя может выиграть не-
сколькими способами, достаточно указать один выигрывающий ход.
б. Сколько существует значений S, при которых Петя не может выиграть за один ход, но при
любом ходе Пети Ваня может выиграть своим первым ходом?
Задание 2
Укажите такое значение S, при котором у Пети есть выигрышная стратегия, причём одно-
временно выполняются два условия:
— Петя не может выиграть за один ход;
— Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Для указанного значения S опишите выигрышную стратегию Пети.
Задание 3
Укажите значение S, при котором одновременно выполняются два условия:
— у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом
при любой игре Пети;
— у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
Для указанного значения S опишите выигрышную стратегию Вани.
Постройте дерево всех партий, возможных при этой выигрышной стратегии Вани (в виде ри-
сунка или таблицы). На рёбрах дерева указывайте ходы, в узлах указывайте позиции.
В заданиях 2 и 3 указать одно значение S и объяснить, почему это значение удовлетворяет
условию соответствующего задания.
27
После единых выпускных экзаменов по информатике в район пришла информация о том,
какой ученик какой школы сколько баллов набрал.
В районе считается подозрительной ситуация, когда в школе более двух учащихся набира-
ют одинаковый наибольший балл по школе.
Районный методист решила выяснить таких номера школ.
Программа должна вывести на номера этих школ, в любом порядке.
Если такая школа окажется одна, нужно вывести наибольший балл в этой школе, с указани-
ем того, что это наибольший балл.
Если таких школ не окажется, нужно вывести об этом сообщение.
Напишите эффективную, в том числе и по используемой памяти, программу (укажите
используемую версию языка программирования, например, Borland Pascal 7.0), которая дол-
жна вывести на экран требуемую информацию. Известно, что информатику сдавало больше
5-ти учеников района. Также известно, что в районе школы с некоторыми номерами не суще-
ствуют.
На вход программе сначала подаётся число учеников, сдававших экзамен. В каждой из сле-
дующих N строк находится информация об учениках в формате:
<Фамилия> <Имя> <Номер школы> <Количество баллов> ,
где <Фамилия> — строка, состоящая не более, чем из 30 символов без пробелов, <Имя> —
строка, состоящая не более, чем из 20 символов без пробелов, <Номер школы> — целое число
в диапазоне от 1 до 99, <Количество баллов> — целое число диапазоне от 0 до 100. Эти данные
записаны через пробел, причём ровно один между каждой парой (т. е., всего по три пробела
в каждой строке).
Пример входной строки:
Иванов Иван 50 87
Пример выходных данных:
5 50 74 87
Другой вариант выходных данных:
7
Наибольший балл = 74
Третий вариант выходных данных:
Нет таких школ
ВАРИАНТ 9
Часть 1
Ответами к заданиям 1—23 являются число, последовательность букв или цифр, кото-
рые следует записать в БЛАНК ОТВЕТОВ № 1 справа от номера соответствующего зада-
ния, начиная с первой клеточки, без пробелов, запятых и других дополнительных симво-
лов. Каждый символ пишите в отдельной клеточке в соответствии с приведёнными в бланке
образцами.
Сколько существует различных 3-значных чисел в десятичной системе счисления?
Ответ:______________________________________________________________________________
2 Дан фрагмент таблицы истинности выражения F, зависящего от трёх логических перемен-
ных хр х2, х3. Значения в пустых клетках таблицы неизвестны и могут быть любыми из воз-
можных.
Х1 Х2 *3 F
0 0
1 1 0 0
Перечислите в порядке возрастания без запятых и пробелов номера логических выраже-
ний, которые могут соответствовать F:
1)
2)
3)
4)
5)
-^А-^Мз
xi Vx3
Дх2 Дх3
\Д*2 V*3
Xj Дх2 Д -х3
Ответ:
3
Между населёнными пунктами А, В, С, D, Е, F построены дороги, протяжённость которых
приведена в таблице. (Отсутствие числа в таблице означает, что прямой дороги между пункта-
ми нет.)
А В С D Е F
А 5 3 8
В 5 1 4 3 6
С 3 1 7
D 4 1 3
Е 8 3 1 2
F 6 7 3 2
Определите длину кратчайшего пути между пунктами А и F (при условии, что передвигать-
ся можно только по построенным дорогам).
Ответ:.
4 Для групповых операций с файлами используются маски имён файлов. Маска представ-
ляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов,
в которой также могут встречаться следующие символы.
Символ «?» (вопросительный знак) означает ровно один произвольный символ.
Символ «*» (звёздочка) означает любую последовательность символов произвольной дли-
ны, в том числе «*» может задавать и пустую последовательность.
Имеется список из нескольких масок:
*to*.?*а*
*sto??.*
?*to*.???
a*to*m.*?а
Определите, какие из указанных файлов будут отобраны по ровно трем из приведённых масок:
l)astorm.aa 2)anastom.bra 3)apostorm.mka 4)abrasto2m.abc
В ответе перечислите номера файлов в порядке возрастания без пробелов и знаков препи-
нания.
Ответ:.
5 По каналу связи передаются сообщения, каждое из которых содержит: 8 букв А, 8 букв Б,
16 букв В и 32 буквы Г (других букв в сообщениях нет).
Каждую букву кодируют двоичной последовательностью. При выборе кода учитывались
два требования:
а) ни одно кодовое слово не является началом другого (это нужно, чтобы код допускал одно-
значное декодирование);
б) общая длина закодированного сообщения должна быть как можно меньше.
Какова наименьшая возможная суммарная длина всех четырёх кодовых слов?
Ответ:.
6_ На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R
следующим образом.
1. Строится двоичная запись числа N.
2. К этой записи дописываются справа ещё два разряда по следующему правилу:
а) складываются все цифры двоичной записи, и остаток от деления суммы на 2 дописывается
в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;
б) над этой записью производятся те же действия — справа дописывается остаток от деления
суммы цифр на 2.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного чис-
ла N) является двоичной записью искомого числа R.
Укажите минимальное число R, которое превышает 49 и может являться результатом работы
алгоритма. В ответе это число запишите в десятичной системе.
Ответ:.
Дан фрагмент электронной таблицы:
А В С D
1 3 5
2 =(D1-A1)*2 =А1+А2-3 =D1-1 -(В1+1)*2
Какое число должно быть записано в ячейке В1, чтобы постро-
енная после выполнения вычислений диаграмма по значениям ди-
апазона ячеек A2:D2 соответствовала рисунку?
Ответ: _____________________________________________________
8
Определите, что будет напечатано в результате выполнения следующего фрагмента про-
граммы:
Бейсик Паскаль
DIM k, s AS INTEGER к = 5 s = 512 WHILE s > 5 s = s \ 2 к = к + 4 WEND PRINT к var k, s : integer; begin к := 5; s := 512; while s > 5 do begin s := s div 2; к := к + 4 end; write(k); end.
Си Алгоритмический язык
( int к, s; к = 5; s = 512; while (s > 5) { s = s / 2; к = к + 4; } printf("%d", k) ; J нач цел k, s k := 5 s := 512 нц пока s > 5 s := div(s,2) k := k + 4 КЦ вывод k KOH
Ответ:.
9| Музыкальный фрагмент был оцифрован и записан в виде файла без использования сжатия
данных.
Получившийся файл был передан в город А по каналу связи за 40 секунд.
Затем тот же музыкальный фрагмент был оцифрован повторно с разрешением в 2 раза
меньше и частотой дискретизации в 1,5 раза больше, чем в первый раз.
Сжатие данных не производилось. Полученный файл был передан в город Б; пропускная
способность канала связи с городом Б в 3 раза выше, чем канала связи с городом А.
Сколько секунд длилась передача файла в город Б?
В ответе запишите только целое число, единицу измерения писать не нужно.
Ответ:.
10 Вася составляет 5-буквенные слова, в которых есть только буквы С, Т, Е, П, А, причём в каж-
дом слове только одна гласная буква. И она стоит либо на первом, либо на последнем месте.
Каждая из других допустимых букв может встречаться в слове любое количество раз или
не встречаться совсем.
Словом считается любая допустимая последовательность букв, не обязательно осмысленная.
Сколько существует таких слов, которые может написать Вася?
Ответ:.
11
Определите, сколько звёздочек будет напечатано в результате вызова F(5) приведённой под-
программы:
Бейсик Паскаль
SUB F(n) PRINT IF n > 0 THEN F(n - 3) F(n - 1) PRINT ; END IF END SUB procedure F(n: integer); begin write ( ' * ' ) ; if n > 0 then begin F(n - 3) ; F(n - 1) ; write('* ' ) end end;
Си Алгоритмический язык
void F(int n) ( printf("*"); if (n > 0) { F(n - 3) ; F(n - 1); printf("*"); } ) алг F(цел n) нач вывод '* 1 если п > 0 то F(n - 3) F(n - 1) вывод '*' все кон
Ответ:.
12 В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая
часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети.
Обычно маска записывается по тем же правилам, что и 1Р-адрес, — в виде четырёх байтов, при-
чём каждый байт записывается в виде десятичного числа. При этом в маске сначала (в старших
разрядах) стоят единицы, а затем с некоторого разряда — нули.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному
IP-адресу узла и маске.
Например, если IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0, то адрес
сети равен 231.32.240.0.
Для узла с IP-адресом 153.214.91.37 адрес сети равен 153.214.80.0. Чему равен третий слева
байт маски? Ответ запишите в виде десятичного числа.
Ответ:.
13 При передаче сообщения используются только десятичные цифры и строчные буквы мест-
ного алфавита.
В местном алфавите 15 букв.
При этом используется посимвольное кодирование и каждый символ кодируется мини-
мально возможным количеством бит.
Каков объём информации (в байтах), записанный устройством после передачи 200 симво-
лов?
Ответ:.
14
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может
выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например,
выполнение команды
заменить (222, 34)
преобразует строку 77222277 в строку 7734277.
Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет
эту строку.
Б) нашлось (v).
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она
встречается, то команда возвращает логическое значение «истина», в противном случае воз-
вращает значение «ложь». Строка исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда!
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда! (если условие истинно) или команда2 (если условие ложно).
Какая строка получится в результате применения приведённой ниже программы к строке,
состоящей из 90 идущих подряд цифр Зив конце одной цифры 1? В ответе запишите получен-
ную строку.
НАЧАЛО
ПОКА нашлось (331) ИЛИ нашлось (166)
ЕСЛИ нашлось (331)
ТО заменить (331, 16)
ИНАЧЕ заменить (166, 31)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Ответ:.
15
На рисунке — схема дорог, связывающих горо-
да А, Б, В, Г, Д, Е, Ж, 3, И, К.
По каждой дороге можно двигаться только в од-
ном направлении, указанном стрелкой.
Сколько существует различных путей из города
А в город К, не проходящих через город Е?
16
Ответ:_______________________________________
Решите уравнение:
204n+1 = 204n + 261в
В ответе укажите значение переменной N.
Ответ:
17
18
19
В языке запросов к поисковому серверу для обозначения логической операции «ИЛИ» ис-
пользуется символ «|», а для логической операции «И» - «&». В таблице приведено количество
страниц, которое находит поисковая система по каждому запросу.
Запрос Количество найденных страниц (в тысячах)
Красный 21
Синий 34
Зелёный 28
Красный & Зелёный 6
Синий & Зелёный 11
Красный | Синий | Зелёный 61
Красный & Синий & Зелёный 2
Какое количество страниц (в тысячах) будет найдено этой поисковой системой по запросу
Красный & Синий ?
Ответ:.
Какое количество натуральных чисел удовлетворяет логическому условию:
-(X2 >= 9) V^((X < 7) V(X >= 10)) ?
Ответ:___________________________________________________________________________
В программе используется целочисленный массив А с индексами от 0 до 9. Значения эле-
ментов массива равны 4; 5; 4; 7; 10; 8; 9; 11; 7; 8 соответственно, т. е. А[0] = 4; А[ 1] = 5 и т. д.
Определите значение переменной k после выполнения следующего фрагмента программы,
записанной ниже на разных языках программирования.
Бейсик Паскаль
к = 0 FOR i = 0 ТО 7 IF A(i) < A(i+2) THEN к = к + 1 t = A (i) Afi) = A(i+2) A(i+2) = t NEXT i к := 0; for i := 0 to 7 do if Afi] < A[i+2] then begin к := к + 1; t := Afi]; Afi] := A[i+2]; A[i+2] := t end;
Си Алгоритмический язык
к = 0; for (i=0 ; i<=7 ; i++) if (Afi] < A[i+2]) { к = к + 1; t = A [i] ; Afi] = A[i+2]; A[i+2] = t; } k := 0 нц для i от 0 до 7 если Afi] < Afi+2] то k := k + 1 t := Afi] Afi] ;= Afi+2] Afi+2] := t все кц
Ответ:.
20
Ниже на четырёх языках записан алгоритм. Получив на вход число х, этот алгоритм печа-
тает три числа К, М и L. Укажите наибольшее число х, при вводе которого алгоритм печатает
сначала 3, потом 2, потом ещё 2.
Бейсик Паскаль
DIM X, Y, К, L, М AS INTEGER INPUT X К = 0 L = 0 М = 0 WHILE X > 0 Y = X MOD 10 К = К + 1 IF Y MOD 3=0 THEN L = L + 1 ENDIF IF Y MOD 5=0 THEN M = M + 1 ENDIF X = X \ 10 WEND PRINT K, " ",L," ",M var x, у, K, L, M: integer; begin readln(x); К := 0; L := 0; M := 0; while x > 0 do begin у := x mod 10; К := К + 1; if у mod 3=0 then L := L + 1; if у mod 5=0 then M := M + 1; x := x div 10 end; writein (K,' ',L, ' ’,M) end.
Си Алгоритмический язык
#include<stdio.h> void main() { int x, у, K, L, M; scanf("%d", &x); К = 0; L = 0; M = 0; while (x > 0){ у = x % 10; К = К + 1; if (у % 3 == 0) L = L + 1; iffy % 5 == 0) L = L + 1; x = x / 10; } printf("%d %d %d", K, L, M); } алг нач цел х, у, К, L, М ввод X К := 0 L := 0 М := 0 нц пока х > 0 у := mod(x,10) К := К + 1 если mod(y,3) = 0 то L := L + 1 все если mod(у,5) = 0 то М := М + 1 все х := div(х,10) кц вывод К, нс, L, нс, М КОН
Ответ:__________________________________________________________________________________
21
Ниже на четырёх языках представлен алгоритм. Определите, при скольких значениях Ь на
экран будет выведено такое же число, как и при b = 200 (включая Ь = 200).
Бейсик Паскаль
DIM А, В AS INTEGER INPUT В А = 0 WHILE А < F(В) А = А + 1 WEND PRINT А FUNCTION F (х) IF х = 0 F = 0 ELSE F = F(x \ 2) + 1 END IF END FUNCTION var a,b integer; function F(x : integer) : integer; begin if x = 0 then F := 0 else F := F(x div 2) + 1 end; BEGIN readln(b); a : = 0; while a < F(b) do begin a : = a + 1 end; write (a) END.
Си Алгоритмический язык
int F(int х) { if (х == 0) return-0; else return F(x / 2) + 1; } void main() { int a, b; scant("%d",&b); a = 0; while (a < F(b)) { a = a + 1; } printf("%d", a); } алг нач цел а, b ввод Ь а : = 0 нц пока а < F(Ь) а : = а + 1 кц вывод а кон алг цел F(цел х) нач если х = 0 то знач := 0 иначе знач := F(div(x,2)) + 1 КЦ кон
Ответ:___________________________________________________________________________________
22 У исполнителя Кузнечик две команды:
1. вычти 3,
2. прибавь 5.
Первая из них уменьшает число на экране на 3, вторая — увеличивает его на 5 (отрицатель-
ные числа допускаются).
Программа для Кузнечика — это последовательность команд. Сколько различных чисел
можно получить из числа 1 с помощью программы, которая содержит ровно 6 команд?
Ответ:.
23
Сколько существует различных наборов значений логических переменных хр х2, ... х , х8,
которые удовлетворяют всем перечисленным ниже условиям?
(х, = х2) V (*! Дх3) V (-'Х1 Л -х3) = 1
(х2 = Х3) V (х2 Дх4) V Ьх2 Д-х4) = 1
(x:j = x4) V(x3 Дх5) V(^x3 Д-*х5) = 1
(х4 е Х5) V (х4 Лхб) V (Л -Х6) = 1
(х5 = Х6) V(Х8 Ах?) V(^х5 Л -Х7) = 1
(Х6 = Х7) V (Х6 Лх8) v (-'Xg Л -Х8) = 1
В ответе ненужно перечислять все различные наборы значений хр х2,... х7, х8, при которых
выполнена данная система равенств.
В качестве ответа вам нужно указать количество таких наборов.
Ответ:.
Не забудьте перенести все ответы в бланк ответов № 1 в соответствии с инструкцией
по выполнению работы.
Часть 2
Для записи ответов на задания этой части (24—27) используйте БЛАНК ОТВЕТОВ № 2.
Запишите сначала номер задания (24, 25 и т. д.), а затем полное решение. Ответы записы-
вайте чётко и разборчиво.
24
Требовалось написать программу, при выполнении которой
с клавиатуры считывается координата точки на прямой (г —
действительное число) и определяется принадлежность этой
точки одному из выделенных отрезков В и D (включая границы).
Программист торопился и написал программу неправильно.
А В С D Е
-1 3 7 11 х
Паскаль Бейсик
var х: real; begin readln(х) ; if х <= 11 then if x >= -1 then if x < 7 then write(’принадлежит') else write('не принадлежит') end. INPUT x IF x <= 11 THEN IF x >= -1 THEN IF x < 7 THEN PRINT "принадлежит" ELSE PRINT "не принадлежит" ENDIF ENDIF END
Си Алгоритмический язык
void main(void) { float x; scanf(”%f",&x); if (x <= 11) if (x >= -1) if (x < 7) printf("принадлежит"); else printf("не принадлежит"); } алг нач вещ х,у ввод X,у если х <= 11 то если х >= -1 то если х < 7 то вывод * принадлежит’ иначе вывод ’не принадлежит’ все все все кон
Последовательно выполните следующее:
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при ар-
гументах, принадлежащих различным областям (А, В, С, D и Е). Границы (точки -1, 3, 7 и 11)
принадлежат заштрихованным областям (В и D соответственно).
Область Условие 1 (х<=11) Условие 2 (х>= -1) Условие 3 (х<7) Программа выведет Область обрабатывается верно
А
В
С
D
Е
В столбцах условий укажите «да», если условие выполнится, «нет», если условие не вы-
полнится, «—» (прочерк), если условие не будет проверяться, «не изв.», если программа ведёт
себя по-разному для разных значений, принадлежащих данной области. В столбце «Програм-
ма выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, на-
пишите «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены
разные тексты, напишите «не изв.». В последнем столбце укажите «Да» или «Нет».
2. Укажите, как нужно доработать программу, чтобы не было случаев её неправильной ра-
боты. (Это можно сделать несколькими способами, поэтому можно указать любой способ до-
работки исходной программы.)
25
Дан целочисленный массив из 40 элементов. Элементы массива могут принимать значения
от —10000 до 10000. Опишите на русском языке или на одном из языков программирования
алгоритм, который проверяет, все ли значения элементов массива чётные и положительные.
Если да, программа должна вывести «YES», в противном случае — «NO».
Исходные данные объявлены так, как показано ниже. Запрещается использовать перемен-
ные, не описанные ниже, но разрешается не использовать часть из них.
Паскаль Бейсик
const N = 40; var a: array [1..N] of integer; i, j, k : integer; begin for i := 1 to N do readln(a [i]>; end. N = 40 DIM A(N) AS INTEGER DIM I, J, К AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I END
СИ Алгоритмический язык
#include <stdio.h> #define N 40 void main(void) {int a [N] ; int i, j, k; for (i = 0; i < N; i++) scanf("%d", &a[i]); } алг нач цел N = 40 целтаб а[1:N] цел i, j, k нц для i от 1 до N ввод a[i] кц кон
Русский (естественный) язык
Объявляем массив А из 40 элементов. Объявляем целочисленные переменные I, J, К. В цикле от 1 до 40 вводим элементы массива А с 1-го по 40-й.
В качестве ответа вам необходимо привести фрагмент программы (или описание алгоритма
на естественном языке), который должен находиться на месте многоточия. Вы можете запи-
сать решение также на другом языке программирования (укажите название и используемую
версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом
случае вы должны использовать те же самые исходные данные и переменные, какие были пред-
ложены в условии (например, в образце, записанном на естественном языке).
26
27
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит две кучи кам-
ней. Игроки ходят по очереди, первый ход делает Петя. Назовём позицией игры указание ко-
личества камней в обеих кучах. Например, позиция (15,20) означает, что в первой куче 15 кам-
ней, а во второй — 20. За один ход игрок может добавить в одну из куч один камень или увели-
чить количество камней в одной из куч в два раза. Например, имея количество камней в кучах
(15,20), за один ход можно получить положение (16,20), (30,20), (15,21) и (15,30). У каждого
игрока, чтобы делать ходы, есть неограниченное количество камней.
Игра завершается в тот момент, когда количество камней в обеих кучах (сумма) становится
не менее 57. Победителем считается игрок, сделавший последний ход, т. е. первым получив-
ший положение, в котором сумма камней в кучах будет 57 или больше камней.
Говорят, что игрок имеет выигрышную стратегию, если он может выиграть при любых хо-
дах противника. Описать стратегию игрока — значит описать, какой ход он должен сделать в
любой ситуации, которая ему может встретиться при различной игре противника. Например,
при начальных позициях (6,24), (7,25), (9,24) выигрышная стратегия есть у Пети. Чтобы вы-
играть, ему достаточно удвоить количество камней во второй куче.
Выполните следующие задания. Во всех случаях обосновывайте свой ответ.
1. Для исходных позиций (6,25) и (8,24) укажите, кто из игроков выигрывает. Сколько хо-
дов необходимо для выигрыша? Опишите выигрышную стратегию. Обоснуйте ответ.
2. Для исходных позиций (6,24), (8,23) и (7,24) укажите, кто из игроков выигрывает. Сколь-
ко ходов необходимо для выигрыша? Опишите выигрышную стратегию. Обоснуйте ответ.
3. Для исходной позиции (7,23) укажите, кто из игроков выигрывает. Сколько ходов необ-
ходимо для выигрыша? Опишите выигрышную стратегию. Приведите дерево игры. Обоснуйте
ответ. На рёбрах дерева указывайте, кто делает ход, в узлах — позицию игры.
После единых выпускных экзаменов по информатике в район пришла информация о том,
какой ученик какой школы сколько баллов набрал. По положению об экзамене оценку «2» (не-
удовлетворительно) получают ученики, набравшие меньше 40 баллов. Оценку «3» (удовлетво-
рительно) получают 30% учеников среди оставшихся, за исключением тех из них, кто набрал
больше 60 баллов.
Если количество «троечников» оказывается больше 30%, то следует выбрать меньшую гра-
ницу для оценки «4» (но только если при этом «3» получит хоть кто-нибудь).
Напишите эффективную, в том числе и по используемой памяти, программу (укажите ис-
пользуемую версию языка программирования, например, Borland Pascal 7.0), которая должна
вывести на экран наибольший балл, который набрали участники, получившие «удовлетвори-
тельно» и количество таких учеников. Известно, что информатику сдавало больше 50-ти учени-
ков. Также известно, что есть такое количество баллов, которое не получил ни один участник.
На вход программе сначала подается число учеников, сдававших экзамен. В каждой из сле-
дующих N строк находится информация об учениках в формате:
<Фамилия> <Имя> сНомер школы> сКоличество баллов> ,
где <Фамилия> — строка, состоящая не более, чем из 30 символов без пробелов, <Имя> —
строка, состоящая не более, чем из 20 символов без пробелов, сНомер школы> — целое число
в диапазоне от 1 до 99, сКоличество баллов> — целое число диапазоне от 1 до 100. Эти данные
записаны через пробел, причём ровно один между каждой парой (то есть, всего по три пробела
в каждой строке).
Пример входной строки:
Иванов Иван 50 87
Пример выходных данных:
45 703
ВАРИАНТ 10
Часть 1
Ответами к заданиям 1—23 являются число, последовательность букв или цифр, кото-
рые следует записать в БЛАНК ОТВЕТОВ № 1 справа от номера соответствующего зада-
ния, начиная с первой клеточки, без пробелов, запятых и других дополнительных симво-
лов. Каждый символ пишите в отдельной клеточке в соответствии с приведёнными в бланке
образцами.
Во сколько раз 348 меньше чем 3400g? В ответе запишите только число в десятичной системе
счисления.
Ответ:.
2 Дан фрагмент таблицы истинности выражения F. Значения в пустых клетках таблицы не-
известны и могут быть любыми из возможных.
х2 хз F
0
0 1 0 0
Перечислите в порядке возрастания без запятых и пробелов номера логических выраже-
ний, которые могут соответствовать F:
1)
2)
3)
4)
5)
хг V^x2V^x3
-Xj /\Х2 Аха
-xl/\-x2f\x3
Xj \J-x2 \Jx3
Ответ:
3 Между населёнными пунктами А, В, С, D, Е, F построены дороги, протяжённость которых
приведена в таблице. (Отсутствие числа в таблице означает, что прямой дороги между пункта-
ми нет.)
А В С D Е F
А 3 8 16
В 3 4 7
С 8 4 2 6
D 7 2 5 4
Е 6 5 2
F 16 1 2 ;
Определите длину кратчайшего пути между пунктами А и F (при условии, что передвигать-
ся можно только по построенным дорогам).
Ответ:_________________________________________________________________________
4
Дан фрагмент базы данных, содержащий информацию о родственных отношениях. Опреде-
лите, сколько потомков Кименко З.Т. упомянуто в таблице.
Таблица 1
ID Фамилия И.О. Пол
1518 Гираб В.А. М
1885 Жуйко А.И. м
2946 Калпен Л.В. м
3472 Арно В.А. /IV
4705 Иваненко И.Л. м
5624 Ирита Е.О. /IV
6109 Кирта У.Т. /IV
7296 Олинг К. Л. /IV
8434 Кименко З.Т. /TV
9657 Вирк Я.М. /IV
...
Ответ:
Таблица 2
Ш_Родителя ГО_Ребёнка
1885 3472
6109 3472
9657 1885
4705 1885 •
2946 4705
5624 4705
8434 2946
1518 2946
2946 7296
5624 7296
... ...
5_ По каналу связи передаются сообщения, каждое из которых содержит: 16 букв А, 32 буквы
Б, 64 буквы В и 16 букв Г (других букв в сообщениях нет).
Каждую букву кодируют двоичной последовательностью. При выборе кода учитывались
два требования:
а) ни одно кодовое слово не является началом другого (это нужно, чтобы код допускал одно-
значное декодирование);
б) общая длина закодированного сообщения должна быть как можно меньше.
Какова наименьшая возможная длина сообщения?
Ответ:.
6 На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R
следующим образом.
1) Строится двоичная запись числа N.
2) К этой записи дописываются справа ещё два разряда по следующему правилу:
а) складываются все цифры двоичной записи, и остаток от деления суммы на 2 дописывается
в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;
б) над этой записью производятся те же действия — справа дописывается остаток от деления
суммы цифр на 2.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного чис-
ла N) является двоичной записью искомого числа R.
Укажите минимальное число R, которое превышает 60 и может являться результатом работы
алгоритма. В ответе это число запишите в десятичной системе.
Ответ:.
7
Дан фрагмент электронной таблицы:
А В С D
1 3 4
2 -А1/3 -С1-А2 -(В1+В2)/2 =С1-3
Какое число должно быть записано в ячейке В1, чтобы построенная после выполнения
вычислений диаграмма по значениям диапазона ячеек A2:D2 соответствовала рисунку?
Ответ:•
8
Определите, что будет напечатано в результате выполнения следующего фрагмента про-
граммы:
Бейсик Паскаль
DIM k, s AS INTEGER к = 1024 s = 50 WHILE s > 30 s = s - 4 к = к \ 2 WEND PRINT к var k, s : integer; begin к := 1024; s := 50; while s > 30 do begin s : = s - 4 ; к := к div 2 end; write(k); end.
Си Алгоритмический язык
( int к, s; к = 1024; s = 50; while (s > 30) { s = s - 4; к = к / 2; } printf("%d", k); } нач цел k, s k := 1024 s := 50 нц пока s > 30 s := s - 4 k := div(k,2) КЦ вывод k KOH
Ответ:.
9 Документ объёмом 320 Мбайт можно передать с одного компьютера на другой двумя спосо-
бами:
А. Сжать архиватором, передать по каналу связи, распаковать.
Б. Передать по каналу связи без использования архиватора.
Какой способ быстрее и на сколько, если:
• средняя скорость передачи данных по каналу связи составляет 224 бит в секунду;
• объём сжатого архиватором документа равен 50% исходного;
• время, требуемое на сжатие документа, — 60 секунд, на распаковку — 30 секунд?
В ответе напишите букву А, если быстрее способ А, или Б, если быстрее способ Б. Сразу
после буквы напишите число, обозначающее, на сколько секунд один способ быстрее другого.
Так, например, если способ Б быстрее способа А на 23 секунды, в ответе нужно написать
Б23.
Единиц измерения «секунд», «сек.», «с.» к ответу добавлять не нужно.
Ответ:.
10
11
Вася составляет 6-буквенные слова, в которых есть только буквы И, В, А, Н, причём буква А
используется в каждом слове ровно 1 раз. Каждая из других допустимых букв может встречаться
в слове любое количество раз или не встречаться совсем. Словом считается любая допустимая
последовательность букв, не обязательно осмысленная. Сколько существует таких слов, которые
может написать Вася?
Ответ: _____
Даны рекурсивные алгоритмы F и G. Чему равна сумма всех чисел, напечатанных на экра-
не при выполнении вызова F(15)?
Бейсик Паскаль
SUB F(n) IF n > 0 THEN G(n - 2) END IF END SUB SUB G(n) PRINT n IF n > 1 THEN F(n - 1) END IF END SUB procedure F(n: integer); forward; procedure G(n: integer); forward; procedure F(n: integer); begin if n > 0 then G(n - 2) end; procedure G(n: integer); begin writein (n); if n > 1 then F(n - 1) end;
Си Алгоритмический язык
void F (int n); void G(int n); void F(int n){ if (n > 0) G(n - 2); } void G (int n) { printf ("%d\n",n); if (n > 1) F(n - 1) ; } алг F(цел n) нач если n > 0 то G(n - 2) все кон алг G(цел п) нач вывод п если п > 1 то F(n - 1) все кон
Ответ:,
12 В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, ка-
кая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой
сети. Обычно маска записывается по тем же правилам, что и IP-адрес. Адрес сети получается
в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске. При
этом адрес узла в сети (часть IP-адреса, задающего адрес самого узла в сети) не может состо-
ять из одних нулей или из одних единиц. Сколько компьютеров может быть в сети с маской:
255.255.255.192?
Ответ:.
13 Кабельная сеть проводит голосование среди зрителей о том, какой из четырёх фильмов они
хотели бы посмотреть вечером. Кабельной сетью пользуются 2000 человек. В голосовании уча-
ствовало 1200 человек. Каков объём информации (в байтах), записанный автоматизированной
системой голосования?
Ответ:.
14
Исполнитель Чертёжник перемещается на координатной плоскости, оставляя след в виде
линии. Чертёжник может выполнять команду сместиться на (а, Ь), где а, b — целые числа.
Эта команда перемещает Чертёжника из точки с координатами (х, у) в точку с координатами
(х + а-, у + Ь).
Например, если Чертёжник находится в точке с координатами (4, 2), то команда сместиться
на (2, —3) переместит Чертёжника в точку (6, -1).
Цикл
ПОВТОРИ число РАЗ
последовательность команд
КОНЕЦ ПОВТОРИ
означает, что последовательность команд будет выполнена указанное число раз (число
должно быть натуральным).
Чертёжнику был дан для исполнения следующий алгоритм (буквами п, а, b обозначены не-
известные числа, при этом п > 1):
НАЧАЛО
сместиться на (-5, 8)
ПОВТОРИ п РАЗ
сместиться на (а, Ь)
сместиться на (14, 18)
КОНЕЦ ПОВТОРИ
сместиться на (-16, -23)
КОНЕЦ
Укажите наименьшее возможное значение числа п, для которого найдутся такие значения
чисел а и Ь, что после выполнения программы Чертёжник возвратится в исходную точку.
Ответ:.
15 На рисунке — схема дорог, связывающих города А, Б,
В, Г, Д, Е, Ж, 3, И, К. По каждой дороге можно двигаться
только в одном направлении, указанном стрелкой. Сколько
существует различных путей из города А в город К?
Ответ:_______________________________________________
16 В системе счисления с основанием 7 записано трёхзначное число. Известно, что все цифры
числа разные. Какое самое большое число удовлетворяет этому условию? Ответ запишите в де-
сятичной системе счисления.
Ответ:.
17
В языке запросов к поисковому серверу для обозначения логической операции «ИЛИ» ис-
пользуется символ «|», а для логической операции «И» — «&». В таблице приведено количе-
ство страниц, которое находит поисковая система по каждому запросу.
Запрос Количество найденных страниц (в тысячах)
Авторучка | Карандаш | Линейка 45
Линейка 23
Карандаш 18
Авторучка 15
Карандаш & Линейка 0
Авторучка & Карандаш 8
Какое количество страниц (в тысячах) будет найдено этой поисковой системой по запросу
Авторучка & Линейка ?
Ответ:.
18 Обозначим через ДЕЛ(п, т) утверждение «натуральное число п делится без остатка на на-
туральное число т».
Для какого наименьшего натурального числа А формула
(-ДЕЛ(х,12) \/^ДЕЛ(х,18)) -> =ДЕЛ(х, А) тождественно истинна (т. е. принимает значение
1 при любом натуральном значении переменной х)?
Ответ:.
19
20
В программе используется целочисленный массив А с индексами от О до 9. Значения эле-
ментов массива равны 4; 5; 4; 7; 10; 8; 9; 11; 7; 8 соответственно, т. е. А[0] = 4; А[1] = 5ит. д.
Определите значение переменной k после выполнения следующего фрагмента программы,
записанной ниже на разных языках программирования.
Бейсик Паскаль
к = 0 FOR i = 0 ТО 8 IF Afi) < A(i+1) THEN t = Afi) Afi) = A(0) A(0) = t к = к + A(0) NEXT i к := 0; for i := 0 to 8 do if Afi] < A[i+1] then begin t : = Afi]; Afi] := A[0]; A[0] := t; к : = к + A [ 0 ] ; end;
Си Алгоритмический язык
к = 0; for (i = 0 ; i <= 8 ; i++) if (Afi] < Afi+1]) { t = Afi]; Afi] = A[0]; A[0] = t; к = к + A [ 0 ] ; } k := 0 нц для i от 0 до 8 если Afi] < А[i +1] то t := Afi] Afi] := A[0] A[0] := t k := k + A[0] все кц
Ответ:.
Ниже на четырёх языках записан алгоритм. Получив на вход число х, этот алгоритм печата-
ет число L. Известно, что х > 50. Укажите наименьшее из таких чисел х (больших 50), при вводе
которых алгоритм печатает 6.
Бейсик Паскаль
DIM X, L, M AS INTEGER INPUT X M = 32 L = X IF L MOD 7=0 THEN M = 36 ENDIF WHILE M <> 0 X = L MOD M L = M M = x WEND PRINT L var x, L, M: integer; begin readln(x) ; M := 32; L : = x ; if L mod 7=0 then M := 36; while M <> 0 do begin x := L mod M; L := M; M : = x end; write(L) end.
Си Алгоритмический язык
#include<stdio.h> void main() { int x, L, M; scanf("%d", &x); M = 32; L = x; if (L % 7 == 0) M = 36; while (M != 0) { x = L % M; L = M; M = x; } printf("%d", L); } алг нач цел х, L, М ВВОД X М := 32 L : = х если mod(L,7)=0 ТО М : = 36 все нц пока М <> 0 х := mod(L,M) L := М М : = х кц вывод L КОН
Ответ: ,
2Г]
Ниже на четырёх языках представлен алгоритм. Напишите в ответе число различных зна-
чений входной переменной k, при которых алгоритм выдаёт тот же ответ, что и при входном
значении k = 40. Значение k = 40 также включается в подсчёт различных значений k.
Бейсик Паскаль
DIM К, I AS INTEGER INPUT К 1 = 0 WHILE F(I) < К 1 = 1 + 1 WEND IF F(I)+F(I-1) < 2*K THEN PRINT I ELSE PRINT 1-1 END IF FUNCTION F (n) F = n * n + 8 END FUNCTION var k, i : longint; function f(n: longint):longint; begin f : = n * n + 8 end; begin readln(k) ; i := 0; while f(i) < k do i : = i + 1 ; if f(i)+f(i-l) < 2*k then wrLteln(i) else writein(i-1) end.
Си Алгоритмический язык
#include <stdio.h> long f(long n) { return n*n + 8; } void main(){ long k, i; scanf("%ld", &k); i = 0; while (f(i) < k) if (f(i)+f(i-l) < 2*k) printf("%ld", i); else printf("%ld", i-1); } алг нач цел k, i ввод к i := 0 нц пока F(i) < к i := i + 1 КЦ если F(i)+F(i-1) < 2 * к ТО вывод i иначе вывод i-1 все кон алг цел F(цел п) нач знач := п * п + 8 КОН
22 j У исполнителя Кузнечик две команды:
1. прибавь 6,
2. прибавь 3.
Первая из них увеличивает число на экране на 6, вторая — увеличивает его на 3.
Программа для Кузнечика — это последовательность команд. Сколько различных чисел
можно получить из числа 0 с помощью программы, которая содержит не более 8 команд?
Ответ:.
23 Сколько существует различных наборов значений логических переменных хр х2, ... х7, х8,
которые удовлетворяют всем перечисленным ниже условиям?
(Xi = -х2) Д(хх V*3) A(^\ V-x3) = О
(x2 = ^x3) Л(*2 Vx4) Л(^х2 V^x4) = О
(х3 = ^х4) Л(^3 /\Ьх3 V-x5) = О
(*4 = ^х5> Л(х4 Ухв) Л(^х4 V^xe) = О
(х5 = ~*х6) Л(х5 Vx7) Л(^х5 V’X7) = О
(Х6 = ^хт) Л(х6 Vx8) /\(-хв V^x8) = О
В ответе ненужно перечислять все различные наборы значений хр х2,... х7, х8, при которых
выполнена данная система равенств. В качестве ответа вам нужно указать количество таких
наборов.
Ответ:.
Не забудьте перенести все ответы в бланк ответов № 1 в соответствии с инструкцией
по выполнению работы.
Часть 2
Для записи ответов на задания этой части (24—27) используйте БЛАНК ОТВЕТОВ № 2.
Запишите сначала номер задания (24, 25 и т. д.), а затем полное решение. Ответы записы-
вайте чётко и разборчиво.
24
Требовалось написать программу, при выпол-
нении которой с клавиатуры считывается коорди-
ната точки на прямой (х — действительное число)
и определяется принадлежность этой точки одному
из выделенных отрезков В и D (включая границы).
Программист торопился и написал программу не-
правильно.
Паскаль Бейсик
var х: real; begin readln(х) ; if х > 1 then if x >= 7 then if x <= 13 then write('принадлежит') else write('не принадлежит') end. INPUT x IF x > 1 THEN IF x >= 7 THEN IF x <= 13 THEN PRINT "принадлежит" ELSE PRINT "не принадлежит" ENDIF ENDIF END
Си Алгоритмический язык
void main(void) { float x; scanf("%f",&x); if (X > 1) if (x >= 7) if (x <= 13) printf("принадлежит"); else printf("не принадлежит"); ) алг нач вещ X/ у ввод х, у если х > 1 то если х >= 7 то если х <= 13 то вывод ’принадлежит' иначе вывод 'не принадлежит’ все все все кон
Последовательно выполните следующее:
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при ар-
гументах, принадлежащих различным областям (А, В, С, D и Е). Границы (точки -5, 1, 7 и 13)
принадлежат заштрихованным областям (В и D соответственно).
Область Условие 1 (х>1) Условие 2 (х>=7) Условие 3 (х<=13) Программа выведет Область обрабатывается верно
А
в d
С
D
Е
В столбцах условий укажите «да», если условие выполнится, «нет», если условие не вы-
полнится, « — » (прочерк), если условие не будет проверяться, «не изв.», если программа ведёт
себя по-разному для разных значений, принадлежащих данной области. В столбце «Програм-
ма выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, на-
пишите «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены
разные тексты, напишите «не изв.». В последнем столбце укажите «Да» или «Нет».
2. Укажите, как нужно доработать программу, чтобы не было случаев её неправильной
работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ
доработки исходной программы.)
25 Дан целочисленный массив из 40 элементов. Элементы массива могут принимать значения
от -10000 до 10000. Опишите на русском языке или на одном из языков программирования
алгоритм, который проверяет, каких значений элементов в массиве больше — положитель-
ных (в этом случае вывести « + »), отрицательных (в этом случае вывести «—»), или их поровну
(в этом случае вывести «=»).
Исходные данные объявлены так, как показано ниже. Запрещается использовать перемен-
ные, не описанные ниже, но разрешается не использовать часть из них.
Паскаль Бейсик
const N = 40; var a: array [1..N] of integer; i, j, k : integer; begin for i := 1 to N do readln(a[i]); end. N = 40 DIM A(N) AS INTEGER DIM I, J, К AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I END
СИ Алгоритмический язык
#include <stdio.h> #define N 40 void main(void) {int a[N]; int i, j, k; for (i =0; i < N; i++) scanf ("%d", &a[i]); } алг нач цел N = 40 целтаб а[1:N] цел i, j, k нц для i от 1 до N ввод а [ i ] кц кон
Русский (естественный) язык
Объявляем массив А из 40 элементов. Объявляем целочисленные переменные I, J, К. В цикле от 1 до 40 вводим элементы массива А с 1-го по 40-й.
В качестве ответа вам необходимо привести фрагмент программы (или описание алгоритма
на естественном языке), который должен находиться на месте многоточия. Вы можете запи-
сать решение также на другом языке программирования (укажите название и используемую
версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом
случае вы должны использовать те же самые исходные данные и переменные, какие были пред-
ложены в условии (например, в образце, записанном на естественном языке).
26 Два игрока, Петя и Ваня, играют в следующую игру. Перед ними лежат две кучки камней,
в первой из которых 4, а во второй — 3 камня. У каждого игрока неограниченно много камней.
Игроки ходят по очереди, первый ход делает Петя. Ход состоит в том, что игрок или утраивает
число камней в какой-то кучке, или добавляет 2 камня в какую-то кучку. Игра завершается в
тот момент, когда количество камней в одной из кучек становится не менее 19. Если в момент
завершения игры общее число камней в двух кучках не менее 33, то выиграл Ваня, в против-
ном случае — Петя. Кто выигрывает при безошибочной игре обоих игроков? Каким должен
быть первый ход выигрывающего игрока? Ответ обоснуйте.
27 На вход программе подаются сведения о работе железнодорожной сортировочной станции,
за каждый год в отдельности. В первой строке сообщается количество строк (N), которые будут
поданы на вход программы.
В каждой из последующих N строк: информация о тоннаже и количестве железнодо-
рожных вагонов, обработанных сортировочной станцией в течение нескольких лет (не раньше
1980 года).
В формате: mm. уууу tttt kkk ,
где mm — номер месяца, уууу — год, tttt — тоннаж, kkk — количество обработанных вагонов
(число положительное, если вагоны прибывающие, отрицательное — если убывающие).
Пример:11.2001 45322 -8657
Необходимо вывести на экран номера лет, в которые наибольший тоннаж одного прибывше-
го вагона превышает наименьший тоннаж одного убывшего.
ВАРИАНТ 11
Часть 1
Ответами к заданиям 1—23 являются число, последовательность букв или цифр, кото-
рые следует записать в БЛАНК ОТВЕТОВ № 1 справа от номера соответствующего зада-
ния, начиная с первой клеточки, без пробелов, запятых и других дополнительных симво-
лов. Каждый символ пишите в отдельной клеточке в соответствии с приведёнными в бланке
образцами.
Сколько единиц в двоичной записи числа 508?
Ответ:____________________________________________________________________________
2
Дан фрагмент таблицы истинности выражения F, зависящего от трех аргументов X, Y, Z:
X Y Z F
0 0 1 1
1 1 0 1
0 1 1 0
Перечислите в порядке возрастания без запятых и пробелов номера логических выраже-
ний, которые соответствуют F:
1)-XV^YV'Z
2)-XVY VZ
3)XV-yaz
4)XAYVZ
5) -XVYA-Z
Ответ:.
На рисунке справа схема дорог Н-ского района изображена в виде графа, в таблице содер-
жатся сведения о длинах этих дорог (в километрах).
Так как таблицу и схему рисовали независимо друг от друга, то нумерация населённых пун-
ктов в таблице никак не связана с буквенными обозначениями па графе. Определите, какова
длина дороги и пункта Б в пункт В. В ответе запишите целое число — так, как оно указано в
таблице.
Ответ: .
Для групповых операций с файлами используются маски имён файлов. Маска представ-
ляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов,
в которой также могут встречаться следующие символы.
Символ «?» (вопросительный знак) означает ровно один произвольный символ.
Символ «*» (звёздочка) означает любую последовательность символов произвольной дли-
ны, в том числе «*» может задавать и пустую последовательность.
В каталоге находятся шесть файлов:
ask. с
kasko.cpp
kraska.doc
nebraska.docx
mask.pic
laska.dpr
Ниже представлено восемь масок. Сколько из них таких, которым соответствует ровно
три файла из данного каталога?
?ask*.???*
*а*а*.*d*
Ответ:_____
*ask*.*с*
*aska*.?* ?
*as??.*с*
?????* . ???
*ask*.???
?s*k?.*
5 Через канал связи передаётся сообщение, состоящее только из символов А, Б, В и Г.
Эти символы кодируются неравномерным (по длине) кодом: А-101, Б-01, В-11, Г-100.
Исходное сообщение: АВАБАГ.
Закодируйте сообщение приведённым кодом.
Полученную последовательность переведите в шестнадцатеричный вид.
В ответе запишите последовательность шестнадцатеричных цифр без запятых.
Ответ:___________________________________________________________________________
6 У исполнителя Утроитель две команды, которым присвоены номера:
1. умножь на 3,
2. прибавь 1.
Первая из них утраивает число на экране, вторая — увеличивает его на 1.
Запишите порядок команд в программе преобразования числа 4 в число 41, содержащей
не более 5 команд, указывая лишь номера команд. (Например, 21211 — это программа
прибавь 1
умножь на 3
прибавь 1
умножь на 3
умножь на 3,
которая преобразует число 1 в 63.)
(Если таких программ более одной, то запишите любую из них.)
Ответ:•
7
В электронной таблице значение формулы =СРЗНАЧ (С2 : D5) равно 3.
Чему равно значение формулы =СУММ (С5 : D5), если значение формулы =СРЗНАЧ (С2 : D4)
равно 5?
Ответ:.
8 Определите, что будет напечатано в результате выполнения следующего фрагмента про-
граммы:
Бейсик Паскаль
DIM k, s AS INTEGER к = 0 S = 6 WHILE s < 605 s = s + 30 к = к + 3 WEND PRINT к var k, s : integer; begin к := 0; s : - 6 ; while s < 605 do begin s : = s + 3 0; к : = к + 3 end; write(k); end.
Си Алгоритмический язык
{ int к, s; к = 0; s - 6; while (s < 605) { s = s + 3 0 ; к = к + 3; } printf("%d", k); } нач цел k, s k := 0 s : = 6 нц пока s < 605 s := s + 30 k := k + 3 КЦ вывод k KOH
Ответ:,
9 Какой объём на диске (в Мбайт) будет занимать неупакованное 16-цветное изображение, со-
держащее изображение размером 2048x1024 пикселей? В ответе запишите только целое число,
единицу измерения писать не нужно.
Ответ:.
10
11
Вася и Петя передают друг другу сообщения, используя синий и красный фонарики. Эти
они делают, включая фонарики последовательно на одинаково короткое время в некоторой
комбинации. Количество вспышек в одном сообщении — 6 или 7. Сколько различных сообще-
ний могут передавать мальчики?
Ответ:.
Дан рекурсивный алгоритм F. Приведите последовательность чисел (без пробелов), напеча-
танных на экране при выполнении вызова F(l).
Бейсик Паскаль
SUB F(n) PRINT n; IF n < 4 THEN F(n + 2) F(n + 1) END IF END SUB procedure F(n: integer); begin write(n); if n < 4 then begin F (n + 2) ; F(n + 1) end end;
Си Алгоритмический язык
void F(int n) алг Г(цел n)
{ нач
printf("%d",n); вывод п
if (n < 4) если п < 4 то
{ F(n + 2)
F(n + 2) ; F(n + 1)
F(n + 1) ; все
} кон
}
Ответ:__________________________________________________________________________________
12 Доступ к файлу ftp.txt, находящемуся на сервере www.com, осуществляется по протоколу
http. В таблице фрагменты адреса файла закодированы буквами от А до G. Запишите последо-
вательность этих букв, кодирующую адрес указанного файла.
А В С D Е F G
ftp .txt / :// WWW хот http
Ответ:,
13 Метеорологическая станция ведёт наблюдение за влажностью воздуха. Результатом одного
измерения является целое число от 1 до 100 процентов, которое записывается при помощи ми-
нимально возможного количества бит. Станция сделала 200 измерений. Определите информа-
ционный объём в битах результатов наблюдений.
Ответ:.
14
Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетча-
той плоскости:
вверх вниз влево вправо
При выполнении этих команд РОБОТ перемещается на одну клетку соответственно: вверх Т,
вниз 4г, влево вправо
Четыре команды проверяют истинность условия отсутствия стены у той клетки, где нахо-
дится РОБОТ:
сверху свободно снизу свободно слева свободно справа свободно
Цикл
ПОКА <условие> команда
выполняется, пока условие истинно, иначе происходит переход на следующую строку.
Если РОБОТ начнет движение в сторону стены, то он раз- рушится и программа прервётся. Сколько клеток лабиринта соответствуют требованию, что выполнив предложенную программу, РОБОТ уцелеет и оста- новится в той же клетке, с которой он начал движение? НАЧАЛО ПОКА Селена свободней вниз ПОКА сснизу свободней вправо ПОКА Ссправа свободно> вверх ПОКА Ссверху свободно> влево КОНЕЦ Ответ:
15 На карту нанесены 4 города (А, В, С и D).
Известно, что:
между городами А и С — три дороги,
между городами С и В — две дороги,
между городами А и В — две дороги,
между городами С и D — две дороги,
между городами В и D — четыре дороги.
По каждой из этих дорог можно ехать в обе стороны. Сколькими различными способами
можно проехать из А в D, посещая каждый город не более одного раза?
Ответ:.
16]
17
В системе счисления с некоторым основанием десятичное число 52 записывается в виде
202. Укажите это основание.
Ответ:.
В таблице приведены запросы к поисковому серверу. Расположите номера запросов в по-
рядке убывания количества страниц, которые найдёт поисковый сервер по каждому запросу. В
ответе перечислите цифры без пробелов и знаков препинания.
Для обозначения логической операции «ИЛИ» в запросе используется символ «|», а для
логической операции «И» — «&».
№ Запрос
1 яблоки|сливы
2 сливы | (сливы & груши)
3 яблоки | груши | сливы
4 (яблоки | груши) & сливы
Ответ:,
18 На числовой прямой даны отрезки Р = [5, 13] и Q = [8, 19]. Укажите наименьшую возмож-
ную длину такого отрезка А, что формула ((х e Q) -> (х е Р)) V (х е А) верна при любых значе-
ниях х.
Ответ:..
19
В программе используется целочисленный массив А с индексами от 0 до 9. Значения эле-
ментов массива равны 4; 5; 4; 7; 10; 8; 9; 11; 7; 6 соответственно, т. е. А[0] = 4; А[1] = 5 и т. д.
Определите значение переменной max после выполнения следующего фрагмента програм-
мы, записанной ниже на разных языках программирования.
Бейсик Паскаль
к = 0 шах = А(0) FOR i = 1 ТО 9 IF A(i) >= А(к) THEN max = A(i) ENDIF NEXT i к := 0; max := A[0 J ; for i := 1 to 9 do if A[i] >= A[k] then max := A [ i];
Си Алгоритмический язык
к = 0; max = А [ 0 ] ; for (i=l ; i<=9 ; i++) if(A[i] >= A[k]) max = Afi] ; k := 0 max := A[0] нц для i от 1 до 9 если A[i] >= A[k] TO max := Afi] все кц
Ответ:.
20
Ниже на четырёх языках записан алгоритм.
Получив на вход число х, этот алгоритм печатает число М.
Укажите число х, при вводе которого алгоритм печатает 126.
Бейсик Паскаль
DIM X, Y, L, M AS INTEGER var x, y, L, M: integer;
INPUT X begin
L = 0 : M = 0 readln(x);
Y = 7 L := 0; M := 0;
IF X MOD 2=0 THEN у := 7;
Y = 9 if x mod 2=0 then
ENDIF у := 9;
WHILE L < X while L < x do
M = M + у begin
L = L + 1 M : = M + у;
WEND L := L + 1
PRINT M end;
write(M) end.
Си Алгоритмический язык
#include<stdio.h> алг
void main() нач
{ цел х, у, L, М
int x, y, L, M; ВВОД X
scanf("%d", &x); L := 0; М := 0
L = 0; M = 0; у := 7
У = 7; если mod(x,2)=0
if (x % 2 == 0) ТО
У = 9; у := 9
while (L < x)( все
M = M + y; нц пока L < х
L = L + 1; М := М + у
} L := L + 1
printf("%d", M) ; КЦ
} вывод М кон
21
Определите, какое число будет напечатано в результате выполнения следующего алгоритма
(для Вашего удобства алгоритм представлен на четырёх языках):
Бейсик Паскаль
DIM А, В, Т, М, R AS INTEGER А = -20: В = 20 М = A: R = F (А) FOR Т = А ТО В IF F(T) <= R THEN M - T R = F(T) END IF NEXT T PRINT M+6 FUNCTION F (x) F = (x*x - 16)*(x*x - 16) + 3 END FUNCTION var a,b,t,M,R : integer; function F(x : integer) : integer; begin F := (x*x - 16) * (x*x - 16) +. 3 end; BEGIN a := -20; b:=20; M : = a; R : = F (a) ; for t := a to b do begin if F (t) OR then begin M := t; R := F(t) end end; write(M+6) END.
Си Алгоритмический язык
int F(int x) { return (x*x - 16)* (x*x - 16) + 3; } void main() { int a, b, t, M, R; a = -20; b = 20; M = a; R = F (a) ; for (t = a; t <= b; t++) { if ( F(t) <= R ) { M = t; R = F (t) ; ) } printf("%d", M + 6) ; } алг нач цел a, b, t, М, R а := -20; Ь := 20 М := a; R := F(a) нц для t от а до b если F(t) <= R ТО И := t R := F(t) все кц вывод М + 6 кон алг цел F(цел х) нач знач := (х*х - 16) * (х * х - 16) + 3 кон
Ответ:.
22 У исполнителя Удвоитель две команды, которым присвоены номера:
1. прибавь 3,
2. умножь на 2.
Первая из них увеличивает число на экране на 3, вторая удваивает его.
Программа для Удвоителя — это последовательность команд.
Сколько есть программ, которые число 1 преобразуют в число 29?
Ответ:
23 Сколько существует различных наборов значений логических переменных хг, х2, ... хв, х7,
которые удовлетворяют всем перечисленным ниже условиям?
(Xi = -х2) V(хх Л ^3) VЛ*3) = 1
(х2 = ^Хз) V(x2 Л^Х4) V(^2 ЛХ4) = 1
(хз = ^Х4) V(x3 Л^Х5) V(^3 Л*5) = 1
(х4 = -х.) V(x4 Л^х6) V(^x4 Лх6) = 1
(х5 = ^Хб) V (х5 л ^х7) V (^х5 Лх7) = 1
В ответе не нужно перечислять все различные наборы значений х , х2,... х6, х7, при которых
выполнена данная система равенств. В качестве ответа вам нужно указать количество таких
наборов.
Ответ: .
Не забудьте перенести все ответы в бланк ответов № 1 в соответствии с инструкцией
по выполнению работы.
Часть 2
Для записи ответов на задания этой части (24—27) используйте БЛАНК ОТВЕТОВ № 2.
Запишите сначала номер задания (24, 25 и т. д.), а затем полное решение. Ответы записы-
вайте чётко и разборчиво.
24 Требовалось написать программу, которая вводит с клавиатуры натуральное число N
(N < 109) и выводит на экран наибольшую цифру числа, которая меньше 6.
Если в числе нет цифр, меньших 6, программа должна вывести на экран «NO».
Программист торопился и написал программу неправильно.
Паскаль Бейсик
var N, d, m: integer; begin readln(N); m : = 0; while N > 0 do begin d := N mod 10; if d < 6 then if d > m then m : = d; N := N div 10 end; if m > 0 then writein(m) else writein('NO') end. DIM N AS LONG INPUT N m = 0 WHILE N > 0 d = N MOD 10 IF d < 6 THEN IF d > m THEN m = d END IF END IF N = N \ 10 WEND IF in > 0 THEN PRINT m ELSE PRINT "NO" END IF END
Си Алгоритмический язык
#include<stdio.h> int main() { long int N; int d, m; scant("%ld", &N); m = 0 ; while (N > 0) { d = N % 10; if (d < 6) if (d > m) m = d; N = N /10; ) if (m > 0) printf("%d", m); else printf("NO"); } алг нач цел N, m, d ввод N m : = 0 нц пока N > 0 d := mod(N,10) если d < 6 to если d > m to m : = d все все N : = div(N, 10) КЦ если m > 0 to вывод m иначе вывод 'NO' все кон
Выполните следующие действия:
1. Напишите, что выведет программа при вводе числа 706.
2. Приведите пример такого числа, при котором программа работает верно.
3. Укажите все ошибки в программе и исправьте их. Для этого для каждой ошибки:
выпишите строку, которая написана неправильно и приведите правильный вариант
строки.
25 Дан вещественный массив из 50 элементов. Элементы массива могут принимать произволь-
ные значения. Опишите на русском языке или на одном из языков программирования алго-
ритм, который находит и выводит наименьший номер отрицательного элемента массива или
сообщение, что такого элемента нет.
Исходные данные объявлены так, как показано ниже. Запрещается использовать перемен-
ные, не описанные ниже, но разрешается не использовать часть из них.
Паскаль Бейсик
const N = 50
N = 50; DIM A(N) AS REAL
var DIM I, J AS INTEGER
a: array [1..N] of real; FOR I = 1 TO N
i, j: integer; INPUT A(I)
begin NEXT I
for i := 1 to N do readln(a[i]);
end. END
СИ Алгоритмический язык
#include <stdio.h> #define N 50 void main(void) {float a [N] ; int i, j; for (i = 0; i < N; i++) scanf("%f”, &a[i]) ; } алг нач цел N = 50 вещтаб а[1:N] цел i, j нц для i от 1 до N ввод а[i] КЦ KQH
Русский (естественный) язык
Объявляем массив А из 50 элементов. Объявляем целочисленные переменные I, J. В цикле от 1 до 50 вводим элементы массива А с 1-го по 50-й.
В качестве ответа вам необходимо привести фрагмент программы (или описание алгоритма
на естественном языке), который должен находиться на месте многоточия. Вы можете запи-
сать решение также на другом языке программирования (укажите название и используемую
версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом
случае вы должны использовать те же самые исходные данные и переменные, какие были пред-
ложены в условии (например, в образце, записанном на естественном языке).
26
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней.
Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу
один или два камня или увеличить количество камней в куче в два раза. Например, имея кучу
из 18 камней, за один ход можно получить кучу из 19, 20 или 36 камней. У каждого игрока,
чтобы делать ходы, есть неограниченное количество камней.
Игра завершается в тот момент, когда количество камней в куче становится не менее 31.
Победителем считается игрок, сделавший последний ход, т. е. первым получивший кучу, в ко-
торой будет 31 или больше камней.
В начальный момент в куче было S камней, 1 < S < 30.
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при
любых ходах противника. Описать стратегию игрока — значит описать, какой ход он должен
сделать в любой ситуации, которая ему может встретиться при различной игре противника.
Выполните следующие задания. Во всех случаях обосновывайте свой ответ.
1. а. Укажите все такие значения числа S, при которых Петя может выиграть в один ход.
Обоснуйте, что найдены все нужные значения S, и укажите выигрывающий ход для каждого
указанного значения S.
б. Укажите такое значение S, при котором Петя не может выиграть за один ход, но при любом
ходе Пети Ваня может выиграть своим первым ходом. Опишите выигрышную стратегию Вани.
2. Укажите два таких значения S, при которых у Пети есть выигрышная стратегия, причём
выполняется два условия: (а) Петя не может выиграть за один ход и (б) Петя может выиграть сво-
им вторым ходом независимо от того, как будет ходить Ваня. Для каждого указанного значения
S опишите выигрышную стратегию Пети.
3. Укажите значение S, при котором выполняется два условия:
- у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым хо-
дом при любой игре Пети, и
— у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
Для указанного значения S опишите выигрышную стратегию Вани. Постройте дерево всех
партий, возможных при этой выигрышной стратегии Вани (в виде рисунка или таблицы). На
рёбрах дерева указывайте, кто делает ход, в узлах — количество камней в куче.
27
На вход программы подаётся: в первой строке — количество входных чисел N.
В последующих N строках — последовательность из N целых чисел. Известно, что каждое
число положительное и не превышает 109.
Напишите эффективную, в том числе и по используемой памяти, программу (укажите ис-
пользуемую версию языка программирования, например, Borland Pascal 7.0), которая должна
вывести на экран максимальное произведение двух различных элементов последовательности,
которое не кратно 15. Под «различными» нужно понимать не различные значения, а различ-
ные номера в последовательности. Т. е., результат может быть квадратом некоторого числа,
если оно в последовательности встречается не менее двух раз (и при этом максимален).
Если такой пары элементов нет, программа должна вывести ноль.
Пример входных данных:
4
90
10
29
3
Пример выходных данных:
290
ВАРИАНТ 12
Часть 1
Ответами к заданиям 1—23 являются число, последовательность букв или цифр, кото-
рые следует записать в БЛАНК ОТВЕТОВ № 1 справа от номера соответствующего зада-
ния, начиная с первой клеточки, без пробелов, запятых и других дополнительных симво-
лов. Каждый символ пишите в отдельной клеточке в соответствии с приведёнными в бланке
образцами.
1_ Сколько существует натуральных чисел х, для которых выполнено неравенство
931в < х < 2368? В ответе укажите только количество чисел, сами числа писать не нужно.
Ответ:.
2
Логическая функция F задаётся выражением (-х) Д((-г/) Vz).
На рисунке приведён фрагмент таблицы истинности функции F, содержащий все наборы
аргументов, при которых функция F истинна.
Определите, какому столбцу таблицы истинности функции F соответствует каждая из пере-
менных х, у, г.
Перем. 1 Перем. 2 Перем. 3 Функция
??? ??? ??? F
0 0 0 1
0 0 1 1
1 0 1 1
В ответе напишите буквы х, у, г в том порядке, в котором идут соответствующие им столбцы
(сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая второ-
му столбцу; затем — буква, соответствующая третьему столбцу). Буквы в ответе пишите под-
ряд, никаких разделителей между буквами ставить не нужно.
Пример. Пусть задано выражение х —> у, зависящее от двух переменных х и у, и таблица
истинности:
Перем. 1 Перем. 2 Функция
??? ??? F
0 0 1
0 1 0
1 0 1
1 1 1
Тогда первому столбцу соответствует переменная у, а второму столбцу — переменная х.
В ответе нужно написать: ух.
Ответ:
3
На рисунке справа схема дорог Н-ского района изображена в виде графа, в таблице содер-
жатся сведения о длинах этих дорог (в километрах).
Так как таблицу и схему рисовали независимо друг от друга, то нумерация населённых пун-
ктов в таблице никак не связана с буквенными обозначениями на графе. Определите, какова
длина дороги и пункта Б в пункт Д. В ответе запишите целое число — так, как оно указано
в таблице.
Ответ:.
Дан фрагмент базы данных, содержащий информацию о родственных отношениях. Опреде-
лите на основании приведённых данных ID внука Дени К. Д.
Таблица 1
ID Фамилия И.О. Пол
1453 Дени К.Д. yiv
2185 Ирта О.Б. 7Tv
2605 Гано И.Е. •гтл jTv
3474 Ивенко Д.Я. м
4218 Бабенко А.Е. м
5363 Марченко Е.Е. м
5771 Арне А.А. м
7148 Камо Е.А. м
7814 Исава Г.А.
8208 Сорт А.К. •yd» Zrt
...
Ответ:
Таблица 2
1В_Родителя 1В_Ребёнка
5363 4218
2185 4218
7148 5363
1453 5363
3474 1453
7814 1453
7148 2605
1453 2605
2605 8208
5771 7814
...
5 Для 5 букв латинского алфавита заданы их двоичные коды (для некоторых букв из двух бит,
для некоторых из трёх). Эти коды представлены в таблице:
А В с в Е
110 100 011 010 01
Определите, какой набор букв закодирован двоичной строкой 01110010011001. В ответе
запишите последовательность букв без запятых.
Ответ:
6
Автомат получает на вход два двузначных шестнадцатеричных числа. В этих числах все
цифры не превосходят цифру 7 (если в числе есть цифра больше 7, автомат отказывается рабо-
тать). По этим числам строится новое шестнадцатеричное число по следующим правилам.
1. Вычисляются два шестнадцатеричных числа — сумма старших разрядов полученных
чисел и сумма младших разрядов этих чисел.
2. Полученные два шестнадцатеричных числа записываются друг за другом в порядке
неубывания (без разделителей).
Пример. Исходные числа: 52, 66. Поразрядные суммы: В, 8. Результат: 8В.
Какие из предложенных чисел могут быть результатом работы автомата?
Перечислите в алфавитном порядке буквы, соответствующие этим числам, без пробелов
и знаков препинания.
А) 18
В) 2F
- С)214
D) 7Е
Е)В7
Ответ: .
7
При работе с электронной таблицей в ячейку Е5 записана формула: =$СЗ-В$3. Какой вид
приобретёт формула, после того как ячейку Е5 скопируют в ячейку D3?
Ответ:,.
8
Определите, что будет напечатано в результате выполнения следующего фрагмента про-
граммы:
Бейсик Паскаль
DIM k, s AS INTEGER к = 1 s = 3 WHILE s < 100 s = s + 5 к = к '+ 2 WEND PRINT к var k, s : integer; begin к := 1; s : = 3 ; while’ s < 100 do begin s : = s + 5 ; к := к + 2 end; write(k); end.
Си Алгоритмический язык
{ int к, s; к = 1; s = 3; while (s < 100) { s = s + 5; к = к + 2; } printf("%d", k); } нач цел k, s k := 1 s : = 3 нц пока s < 100 s := s + 5 k := k + 2 КЦ вывод k KOH
Ответ:__________________________________________________________________________________
9
Какой максимальный объём файла (в Мбайт), который может быть передан по каналу свя-
зи с пропускной способностью 16 Мбит/с за 4 минуты. В ответе запишите только целое число,
единицу измерения писать не нужно.
Ответ:.
10
11
Все 4-буквенные слова, составленные из букв Б, В, Г, Д, записаны в алфавитном порядке.
Вот начало списка:
1. ББББ
2. БББВ
3. БББГ
4. БББД
5. ББВБ
Запишите слово, стоящее на 244-м месте от начала списка.
Ответ:,
Даны рекурсивные алгоритмы F и G. Чему равно значение функции G(6)?.
Бейсик Паскаль
FUNCTION F(n) IF n > 2 THEN F = F(n - 1) + G(n - 2) ELSE F = n END IF END FUNCTION FUNCTION G(n) IF n > 1 THEN G = G(n - 1) + F(n) ELSE G = n + 1 END IF END FUNCTION function F(n: integer): integer; begin if n > 2 then F := F(n - 1) + G(n - 2) else F := n end; function G(n: integer): integer; begin if n > 1 then G := G(n - 1) + F(n) else G := n + 1 end;
Си Алгоритмический язык
int F(int n) { if (n > 2) return F(n-1)+G (n-2) ; else return n; } int G(int n){ if (n > 1) return G(n-1)+F(n); else return n + 1; } алг цел F(цел n) нач если п > 2 то знач : = F (п - 1) + G (п - 2) иначе знач := п все кон алг цел G(цел п) нач если п > 1 то знач := G(n - 1) + F(n) иначе знач := п + 1 все кон
12
На месте преступления были обнаружены четыре обрывка бумаги. Следствие установило,
что на них записаны фрагменты одного IP-адреса. Криминалисты обозначили эти фрагменты
буквами А, Б, В и Г. Восстановите 1Р-адрес.
В ответе укажите последовательность букв, обозначающих фрагменты, в порядке, соответ-
ствующем IP-адресу.
7.99 31.7 2 8.21
А В С D
Ответ:,
13 При регистрации в компьютерной системе каждому пользователю выдаётся пароль, состо-
ящий из 11 символов. Из соображений информационной безопасности каждый пароль должен
содержать как прописные, так и строчные латинские буквы, а также не менее 1 символа из
6-символьного набора: «&», «#», «$», «*», «!», «@». В базе данных для хранения сведений о
каждом пользователе отведено одинаковое и минимально возможное целое число байт. При
этом используют посимвольное кодирование паролей, все символы кодируют одинаковым и
минимально возможным количеством бит. Кроме собственно пароля, для каждого пользова-
теля в системе хранятся дополнительные сведения, для чего выделено целое число байт; это
число одно и то же для всех пользователей.
Для хранения сведений о 25 пользователях потребовалось 500 байт. Сколько байт выделе-
но для хранения дополнительных сведений об одном пользователе? В ответе запишите только
целое число — количество байт.
Ответ:.
14 Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетча-
той плоскости:
вверх вниз влево вправо
При выполнении этих команд РОБОТ перемещается на одну клетку соответственно:
вверх Т, вниз J-, влево вправо
Четыре команды проверяют истинность условия отсутствия стены у той клетки, где нахо-
дится РОБОТ:
сверху свободно снизу свободно слева свободно справа свободно
Цикл
ПОКА <условие> команда Выполняется, пока условие истинно, иначе происходит переход на следующую строку.
A-JkyJll'l -L V/U\y А Hu^llLl Ц, D xljlvky 11x11л ку 1 kz^zkzlljr ку J. 111J1, 1 к/ к/11 рушится и программа прервётся. Сколько клеток приведённого лабиринта соответствует требованию, что, выполнив предложенную ниже программу, РОБОТ остановится в той же клетке, с которой он начал дви- жение? НАЧАЛО ПОКА <слева свободно> вверх ПОКА <сверху свободно> вправо ПОКА <справа свободно> вниз ПОКА <снизу свободно влево КОНЕЦ
Ответ:.
15
На рисунке — схема дорог, связывающих города А, Б,
В, Г, Д, Е, Ж, И, К.
По каждой дороге можно двигаться только в одном на-
правлении, указанном стрелкой.
Сколько существует различных путей из города А в
город К?
Ответ: .
16 Укажите через запятую в порядке возрастания все основания систем счисления, в которых
запись числа 29 оканчивается на 5.
Ответ:.
17 В языке запросов к поисковому серверу для обозначения логической операции «ИЛИ» ис-
пользуется символ «|», а для логической операции «И» — «&». В таблице приведено количество
страниц, которое находит поисковая система по каждому запросу.
Запрос Количество найденных страниц
Арбузы 9400
Дыни 4700
Арбузы | Дыни 11900
Какое количество страниц будет найдено по запросу: Арбузы & Дыни ?
Считается, что все запросы выполнялись практически одновременно, так что набор страниц,
содержащих все искомые слова, не изменялся за время выполнения запросов.
Ответ:.
18 На числовой прямой даны отрезки Р = [5, 13] и Q = [8, 19]. Укажите наибольшую возмож-
ную длину такого отрезка А, что формула (х е А) —> ^(-(х е Р) Д ^(х е Q)) верна при любых
значениях х.
Ответ:.
19
В программе используется целочисленный массив А с индексами от 0 до 9. Значения эле-
ментов массива равны 6; 5; 4; 7; 10; 6; 9; 11; 7; 8 соответственно, т. е. А[0] = 6; А[1] = 5 и т. д.
Определите значение переменной k после выполнения следующего фрагмента программы,
записанной ниже на разных языках программирования.
Бейсик Паскаль
к = 0 min = А(0) FOR i = 1 ТО 9 IF A(i) <= min THEN к = i ENDIF NEXT i к : = 0; min := A[0]; for i := 1 to 9 do if A[i] <= min then к := i;
Си Алгоритмический язык
к = 0; min = A[0]; for (i=l ; i<=9 ; i++) if(A[i] <= min) к = i; k := 0 min := A[0] нц для i от 1 до 9 если A[i] <= min TO k := i все кц
20
Ниже на четырёх языках записан алгоритм. Получив на вход число х, этот алгоритм пе-
чатает два числа: L и М. Укажите наименьшее из таких чисел х, при вводе которых алгоритм
печатает сначала 8, а потом 13.
Бейсик Паскаль
DIM X, М, L AS INTEGER INPUT X М = 0 L = 0 WHILE X > 0 M = M + X MOD 10 IF X MOD 10 > L THEN L = X MOD 10 ENDIF x = x \ io WEND PRINT L PRINT M var x, M, L: integer; begin readln(x) ; M : = 0; L := 0; while x > 0 do begin M := M. + x mod 10; if x mod 10 > L then L := x mod 10; x := x div 10 end; writein (L); write(M) end.
Си Алгоритмический язык
#include<stdio.h> void main() ( int x, M, L; scanf("%d", &x); M = 0; L = 0; while (x > 0){ M=M+x%10; if(x % 10 > L) L = x % 10; x = x / 10; } printf("%d\n%d", L, M) ; } алг нач цел х, М, L ввод X М := 0 L := 0 нц пока х > 0 М := М + mod(х,10) если mod(х,10) > L ТО L := mod(х,10) все х := div(х,10) кц вывод L, нс, М ' кон
Ответ: •
21
Определите, при каком наибольшем значении b в результате выполнения следующего алго-
ритма будет напечатано число 50 (для Вашего удобства алгоритм представлен на четырёх язы-
ках):
Бейсик Паскаль
DIM А, В, Т, К AS INTEGER А = 20 INPUT В К = 0 FOR Т = А ТО В К = К + F(T) NEXT Т PRINT К FUNCTION F (х) IF х MOD 3=0 THEN F = 0 ELSE F = 1 END IF END FUNCTION var a,b,t,k : integer; function F(x : integer) : integer; begin if x mod 3=0 then F := 0 else F := 1 end; BEGIN a := 20; readln(b); k := 0; for t := a to b do k : = k + F (t) ; write(k) END.
Си Алгоритмический язык
int F(int х) алг
{ нач
if (х % 3 == 0) цел a, b, t, к
return 0; а := 20
else ввод Ь
return 1; к := 0
) нц для t от а до Ь
void main() к := к + F(t)
{ КЦ
int.a, b, t, k; вывод к
a = 20; КОН
scant("%d",&b) ;
k = 0; алг цел Р(цел х)
for (t=a; t<=b; t++) нач
{ если mod(х,3)=0
k = k + F (t) ; ТО
} знач := 0
printf("%d", k) ; иначе
} знач := 1
все
КОН
—
Ответ:__________________________________________________________________________________
22 У исполнителя Утроитель две команды, которым присвоены номера:
1. прибавь 1,
2. умножь на 3.
Первая из них увеличивает число на экране на 1, вторая утраивает его.
Программа для Утроителя — это последовательность команд.
Сколько есть программ, которые число 2 преобразуют в число 28?
Ответ:_________________________________________________________________________
23 Сколько существует различных наборов значений логических переменных х4, х2, ... х8, х9,
которые удовлетворяют всем перечисленным ниже условиям?
(х4 = х2) Л (xt V ^х3) л (V х3) = О
(х2 = х3) л (x2 V -х4) л ( -Х2 V х4) = О
(хз = Х4) л (х3 V ^х5) л ( -Х3 V х5) = О
(х4 = х5) Л(х4 V-’Хе) Л(^х4 V*6) = О
(х5 Sх6) Л(х5 V^x7) Л(’Х5 Vx7) = О
(Х6 = х7) Л (х6 V ^х8) Л (-XG V Х8) = 0
(х7 = х8) л (х7 V -х9) Л ( -Х7 V Х9) = О
В ответе не нужно перечислять все различные наборы значений х , х2,... х8, х9, при которых
выполнена данная система равенств. В качестве ответа вам нужно указать количество таких
наборов.
Ответ:.
Не забудьте перенести все ответы в бланк ответов № 1 в соответствии с инструкцией
по выполнению работы.
Часть 2
Для записи ответов на задания этой части (24—27) используйте БЛАНК ОТВЕТОВ № 2.
Запишите сначала номер задания (24, 25 и т. д.), а затем полное решение. Ответы записы-
вайте чётко и разборчиво.
24
Требовалось написать программу, которая вводит с клавиатуры натуральное число N
(N < 109) и выводит на экран наибольшую цифру числа. Программист торопился и написал
программу неправильно.
Паскаль Бейсик
var N,k: integer; begin readln(N); k := 10; while N > 0 do begin if N mod 10 < k then k := N mod 10; N := N div 10 end; writein(k) end. DIM N AS LONG INPUT N k = 10 WHILE N > 0 IF N MOD 10 < k THEN k = N MOD 10 END IF N = N \ 10 WEND PRINT k END
Си Алгоритмический язык
#include<stdio.h> int main() { long int N; int k; scanf("%ld", &N); k = 10; while (N > 0) { if (N % 10 < k) k = N % 10; N = N /10; } printf("%d", k); } алг нач цел N, к ввод N к := 10 нц пока N > 0 если mod(N,10) < к то к, := mod (N, 10) все N div(N, 10) КЦ вывод к КОН
Выполните следующие действия:
1. Напишите, что выведет программа при вводе числа 527.
2. Приведите пример такого числа, при котором программа работает верно.
3. Укажите все ошибки в программе и исправьте их. Для этого для каждой ошибки: выпи
шите строку, которая написана неправильно и приведите правильный вариант строки.
25 Дан целочисленный массив из 30 элементов. Элементы массива могут принимать произ-
вольные значения. С клавиатуры вводится целое число X. Опишите на русском языке или на
одном из языков программирования алгоритм, который находит и выводит наименьший номер
элемента массива, равного X, или сообщение, что такого элемента нет.
Исходные данные объявлены так, как показано ниже. Запрещается использовать перемен-
ные, не описанные ниже, но разрешается не использовать часть из них.
Паскаль Бейсик
const N = 30; var a: array [1..N] of integer; i, j, x: integer; begin for i := 1 to N do readln(a[i]); readln(x); end. N = 30 DIM A(N) AS INTEGER DIM I, J, X AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I INPUT X . END
СИ Алгоритмический язык
#include <stdio.h> # define N 30 void main(void) {int a[N]; int i, j, x; for (i = 0; i < N; i++) scanf("%d", &a[i]); scanf("%d",&x); } алг нач цел N = 30 целтаб а[1:N] цел i, j, х нц для i от 1 до N ввод a[i] КЦ ВВОД X кон
Русский (естественный) язык
Объявляем массив А из 30 элементов. Объявляем целочисленные переменные I, J. В цикле от 1 до 30 вводим элементы массива А с 1-го по 30-й. Вводит переменную X.
В качестве ответа вам необходимо привести фрагмент программы (или описание алгоритма
на естественном языке), который должен находиться на месте многоточия. Вы можете запи-
сать решение также на другом языке программирования (укажите название и используемую
версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом
случае вы должны использовать те же самые исходные данные и переменные, какие были пред-
ложены в условии (например, в образце, записанном на естественном языке).
26 Два игрока, Петя и Ваня, играют в следующую игру.
Перед игроками лежит куча камней.
Игроки ходят по очереди, первый ход делает Петя.
За один ход игрок может добавить в кучу один или два камня или увеличить количество
камней в куче в три раза. Например, имея кучу из 15 камней, за один ход можно получить кучу
из 16, 17 или 45 камней. У каждого игрока, чтобы делать ходы, есть неограниченное количе-
ство камней.
Игра завершается в тот момент, когда количество камней в куче становится не менее 31.
Победителем считается игрок, сделавший последний ход, т. е. первым получивший кучу, в ко-
торой будет 31 или больше камней.
В начальный момент в куче было S камней, 1 S < 30.
Говорят, что игрок имеет выигрышную стратегию, если он может выиграть при любых хо-
дах противника. Описать стратегию игрока — значит описать, какой ход он должен сделать
в любой ситуации, которая ему может встретиться при различной игре противника.
Выполните следующие задания. Во всех случаях обосновывайте свой ответ.
1. а. Укажите все такие значения числа S, при которых Петя может выиграть в один ход.
Обоснуйте, что найдены все нужные значения S, и укажите выигрывающий ход для каждого
указанного значения S.
б. Укажите такое значение S, при котором Петя не может выиграть за один ход, но при лю-
бом ходе Пети Ваня может выиграть своим первым ходом. Опишите выигрышную стратегию
Вани.
2. Укажите два значения S, при которых у Пети есть выигрышная стратегия, причём
(а) Петя не может выиграть за один ход и (б) ПеТя может выиграть своим вторым ходом неза-
висимо от того, как будет ходить Ваня. Для каждого указанного значения S опишите выигрыш-
ную стратегию Пети.
3. Укажите такое значение S, при котором:
— у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым хо-
дом при любой игре Пети, и
— у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
Для указанного значения S опишите выигрышную стратегию Вани.
Постройте дерево всех партий, возможных при этой выигрышной стратегии Вани (в виде
рисунка или таблицы). На рёбрах дерева указывайте, кто делает ход, в узлах — количество
камней в куче.
27 Вам предлагаются два задания, связанные с этой задачей: задание А и задание Б. Вы
можете решать оба задания А и Б или одно из них по своему выбору.
Итоговая оценка выставляется как максимальная из оценок за задания А и Б.
Если решение одного из заданий не представлено, то считается, что оценка за это за-
дание составляет 0 баллов.
Задание Б является усложненным вариантом задания А, оно содержит дополнитель-
ные требования к программе.
Напишите программу, которая должна вывести на экран минимальное чётное произведе-
ние двух элементов последовательности, номера которых различаются не меньше чем на 6.
Если такой пары элементов нет, программа должна вывести ноль.
А. Напишите на любом языке программирования программу для решения поставленной
задачи, в которой входные данные будут запоминаться в массиве, после чего будут проверены
все возможные пары элементов.
Перед программой укажите версию языка программирования.
Обязательно укажите, что программа является решением задания А.
Максимальная оценка за выполнение задания А — 2 балла.
Б. Напишите программу для решения поставленной задачи, которая будет эффективна как
по времени, так и по памяти (или хотя бы по одной из этих характеристик).
Программа считается эффективной по времени, если время работы программы пропорци-
онально количеству элементов последовательности N, т. е. при увеличении Nek раз время
работы программы должно увеличиваться не более чем в к раз.
Программа считается эффективной по памяти, если размер памяти, использованной в про-
грамме для хранения данных, не зависит от числа N и не превышает 1 Кбайта.
Перед программой укажите версию языка программирования и кратко опишите использо-
ванный алгоритм.
Обязательно укажите, что программа является решением задания Б.
Максимальная оценка за правильную программу, эффективную по времени и по памя-
ти, — 4 балла.
Максимальная оценка за правильную программу, эффективную по времени, но неэффек-
тивную по памяти, — 3 балла.
Напоминаем! Не забудьте указать, к какому заданию относится каждая из представленных
Вами программ.
Входные данные представлены следующим образом. В первой строке задается число N —
общее количество элементов последовательности (N < 10 000).
В каждой из следующих N строк задаётся одно положительное целое число — очередной
элемент последовательности.
Известно, что каждое число положительное и не превышает 1000.
Пример входных данных:
8
1
4
5
7
8
3
2
9
Пример выходных данных:
2
ВАРИАНТ 13
Часть 1
Ответами к заданиям 1—23 являются число, последовательность букв или цифр, кото-
рые следует записать в БЛАНК ОТВЕТОВ № 1 справа от номера соответствующего зада-
ния, начиная с первой клеточки, без пробелов, запятых и других дополнительных симво-
лов. Каждый символ пишите в отдельной клеточке в соответствии с приведёнными в бланке
образцами.
Сколько единиц содержится в двоичной записи шестнадцатеричного числа ЗВ5Е16?
Ответ:___________________________________________________________________________
2
Логическая функция F задаётся выражением -^х V((^y) А2)-
На рисунке приведён фрагмент таблицы истинности функции F, содержащий все наборы
аргументов, при которых функция F истинна.
Определите, какому столбцу таблицы истинности функции F соответствует каждая из пере-
менных х, у, 2.
Перем. 1 Перем. 2 Перем. 3 Функция
??? ??? ??? F
0 0 0 1
0 0 1 1
0 1 0 1
0 1 1 1
1 1 0 1
В ответе напишите буквы х, у, z в том порядке, в котором идут соответствующие им столбцы
(сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая второ-
му столбцу; затем — буква, соответствующая третьему столбцу). Буквы в ответе пишите под-
ряд, никаких разделителей между буквами ставить не нужно.
Пример. Пусть задано выражение х -> у, зависящее от двух переменных х и у, и таблица
истинности:
Перем. 1 Перем. 2 Функция
??? ??? F
0 0 1
0 1 0
1 0 1
1 1 1
Тогда первому столбцу соответствует переменная у, а второму столбцу — переменная х.
В ответе нужно написать: ух.
Ответ:
3
На рисунке справа схема дорог Н-ского района изображена в виде графа, в таблице содер-
жатся сведения о длинах этих дорог (в километрах).
Так как таблицу и схему рисовали независимо друг от друга, то нумерация населённых пун-
ктов в таблице никак не связана с буквенными обозначениями на графе. Определите, какова дли-
на дороги и пункта А в пункт К. В ответе запишите целое число — так, как оно указано в таблице.
Ответ: •
Для групповых операций с файлами используются маски имён файлов. Маска представ-
ляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов,
в которой также могут встречаться следующие символы.
Символ ♦ ?» (вопросительный знак) означает ровно один произвольный символ.
Символ «*» (звёздочка) означает любую последовательность символов произвольной
длины, в том числе **» может задавать и пустую последовательность.
В каталоге находятся пять файлов:
boom.pas bloom.ppt loom.pas bottom.pdf bom.pps
Ниже представлено восемь масок. Сколько из них таких, которым соответствует ровно
три файла из данного каталога?
b*om.??? *oo*m.*p?? ?oo*m.p* *om.*
bo*.??* ?o*m.p?s *lo*.p* b*o*m.??*
Ответ:.
5
Для кодирования некоторой последовательности, состоящей из букв А, Б, В, Г и Д, исполь-
зуется неравномерный двоичный код, позволяющий однозначно декодировать полученную
двоичную последовательность. Вот этот код: А-01, Б-101, В-11, Г-00. Каким кодовым словом
должна кодироваться буква Д? Если таких вариантов несколько, укажите самый короткий.
Ответ:.
6
У исполнителя Утроитель две команды, которым присвоены номера:
1. умножь на 3,
2. прибавь 2.
Первая из них утраивает число на экране, вторая — увеличивает его на 2.
Запишите порядок команд в программе преобразования числа 3 в число 65, содержащей
не более 5 команд, указывая лишь номера команд. (Например, 21211 — это программа
прибавь 2
умножь на 3
прибавь 2
умножь на 3
умножь на 3,
которая преобразует число 1 в 66.)
(Если таких программ более одной, то запишите любую из них.)
Ответ: .
7
Дан фрагмент электронной таблицы.
А В С D
1 4 5 3
2 2 1 =А1+В2
3 6 7 =А$2+В3
Чему станет равным значение ячейки D2, если в нее скопировать формулу из ячейки СЗ?
Примечание: знак $ обозначает абсолютную адресацию.
Ответ:,
8
Определите, что будет напечатано в результате выполнения следующего фрагмента про-
граммы:
Бейсик Паскаль
DIM k, s AS INTEGER к = 2 s = 7 WHILE s < 70 s = s + 10 к = к * 2 WEND PRINT к var k, s : integer; begin к := 2; s := 7; while s < 70 do begin s := s + 10; к := к * 2 end; write(k); end.
Си Алгоритмический язык
{ int к, s; к = 2; s = 7; while (s < 70) { s = s + 10 ; к = к * 2; } printf("%d", k) ; } нач цел k, s k := 2 s := 7 нц пока s < 7 0 s : = s + 10 k := k * 2 КЦ вывод k KOH
Ответ: -___________________________________________________________________________
9 Какова ширина (в пикселях) прямоугольного 64-цветного неупакованного растрового
изображения, занимающего на диске 1,5 мегабайта, если его высота вдвое меньше ширины?
В ответе запишите только целое число, единицу измерения писать не нужно.
Ответ: .
10
Вася и Петя передают друг другу сообщения, используя флажки 6-ти цветов. Эти они дела-
ют, поднимая последовательно один из флажков, потом опускают его и поднимают ещё какой-
то. Чтобы не путаться, ребята договорились, что флажки в одном сообщении не могут повто-
ряться, при этом сообщение состоит ровно из трёх флажков. Сколько различных сообщений
могут передавать мальчики?
Ответ:.
11
12
Алгоритм вычисления значения функции F(n), где п — натуральное число, задан следую-
щими соотношениями:
F(n) = F(n - 1) + п/2, при п > 1 и п кратно 2,
F(n) = F(n - 1) + 1, при п > 1 и п не кратно 2,
F(l)=l.
Чему равно значение функции F(8)?
В ответе запишите только натуральное число.
Ответ:.
На месте преступления были обнаружены четыре обрывка бумаги. Следствие установило,
что на них записаны фрагменты одного IP-адреса. Криминалисты обозначили эти фрагменты
буквами А, Б, В и Г. Восстановите 1Р-адрес.
В ответе укажите последовательность букв, обозначающих фрагменты, в порядке, соответ-
ствующем IP-адресу.
3.231 3.25 18 .64
А В С D
Ответ:__________________________________________________________________________________
13 Для передачи секретного сообщения используется код, состоящий из латинских строчных
букв. При этом все буквы кодируются одним и тем же (минимально возможным) количеством
бит. Определите информационный объём сообщения длиной в 100 символов (в битах).
Ответ:.
14
Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетча-
той плоскости включает 4 команды-приказа и 4 команды проверки условия.
Команды-приказы:
вверх вниз влево вправо
При выполнении любой из этих команд РОБОТ перемещается на одну клетку соответствен-
но: вверх Т, вниз 1, влево вправо
Если РОБОТ начнёт движение в сторону находящейся рядом с ним стены, то он разрушится
и программа прервётся.
Другие четыре команды проверяют истинность условия отсутствия стены у каждой сторо-
ны той клетки, где находится РОБОТ:
сверху свободно снизу свободно слева свободно справа свободно
Цикл
ПОКА <условие>
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ <условие> команда
выполняется команда, если условие истинно. Если условие ложно, происходит переход к
следующей команде.
15
16
Сколько клеток лабиринта соответствует требованию, что,
начав движение в ней и выполнив предложенную программу,
РОБОТ уцелеет и остановится в закрашенной клетке (клетка F6)?
НАЧАЛО
ПОКА ссправа свободно ИЛИ снизу свободно
ЕСЛИ ссправа свободно вправо
вниз
КОНЕЦ ПОКА
КОНЕЦ
Ответ:.
На рисунке — схема дорог, связывающих города А, Б, В,
Г, Д, Е, Ж, И, К. По каждой дороге можно двигаться только в
одном направлении, указанном стрелкой. Сколько существует
различных путей из города А в город К?
Ответ:.
Укажите наибольшее основание системы счисления, в которой запись десятичного чис-
ла 40 имеет ровно 3 значащих разряда.
Ответ:.
17 В языке запросов к поисковому серверу для обозначения логической операции «ИЛИ» ис-
пользуется символ «|», а для логической операции «И» — «&». В таблице приведено количество
страниц, которое находит поисковая система по каждому запросу.
Запрос Количество найденных страниц (в тысячах)
Гуси 56
Гуси | Лебеди 138
Гуси & Лебеди 26
Какое количество страниц будет найдено по запросу: Лебеди ?
Считается, что все запросы выполнялись практически одновременно, так что набор страниц,
содержащих все искомые слова, не изменялся за время выполнения запросов.
Ответ:.
18 На числовой прямой даны отрезки Р = [5, 13] и Q = [8, 19]. Укажите наименьшую возмож-
ную длину такого отрезка А, что формула ((х е Р) -> (х е А)) -> ((х е Q) -> (х е А)) верна при
любых значениях х.
Ответ:.
19
В программе используется целочисленный массив А с индексами от 0 до 9. Значения эле-
ментов массива равны 6; 5; 4; 7; 10; 6; 9; 11; 7; 8 соответственно, т. е. А[0] = 6; А[1] = 5 и т. д.
Определите значение переменной k после выполнения следующего фрагмента программы,
записанной ниже на разных языках программирования.
Бейсик Паскаль
к = 0 m = А(0) FOR i = 1 ТО 9 IF A(i) > m THEN к = i ENDIF NEXT i к := 0; m : = A [ 0 ] ; for i:=l to 9 do if A[i] > m then к := i;
Си Алгоритмический язык
к = 0; k := 0
m = А [ 0 ] ; m := A[0]
for (1=1 ; i<=9 ; i++) ни для i от 1 до 9
if(A[iJ > m) если A[i] > m
к = i; TO k := i все кц
Ответ:,
20 | Ниже на четырёх языках записан алгоритм. Получив на вход число х, этот алгоритм пе-
чатает два числа: L и М. Укажите наименьшее из таких чисел х, при вводе которых алгоритм
печатает сначала 3, а потом 13.
Бейсик Паскаль
DIM X, M, L AS INTEGER INPUT X M = 0 L = 10 WHILE X > 0 M = M + X MOD 10 IF X MOD 10 < L THEN L = X MOD 10 ENDIF X = X\10 WEND PRINT L PRINT M var x, M, L: integer; begin readln(x); M := 0; L := 10; while x > 0 do begin M := M + x mod 10; if x mod 10 < L then L := x mod 10; x := x div 10 end; writein(L); write(M) end.
Си Алгоритмический язык
#include<stdio.h> void main() { int x, M, L; scanf("%d", &x); M = 0; L = 10; while (x > 0) { M=M+x%10; if(x % 10 < L) L = x % 10; x = x / 10; } printf("%d\n%d", L, M) ; } алг нач цел х, М, L ввод X М := 0 L := 10 нц пока х > 0 М : = М + mod (х, 10). если mod(х,10) < L ТО L := mod(х,10) все х := div(х,10) кц вывод L, нс, И кон
Ответ:
21
Ниже на четырёх языках представлен алгоритм. Напишите в ответе наименьшее значение
входной переменной k, при котором программа выдаёт тот же ответ, что и при входном значе-
нии k = 64.
Бейсик Паскаль
DIM К, A AS INTEGER INPUT К А = 1 WHILE F (А) < G(A,К) A = A + 1 WEND PRINT A FUNCTION F (П) F = n * n - 15 END FUNCTION FUNCTION G (n,k) G = 2 * n + k END FUNCTION var k, a : integer; function f(n : integer) : integer; begin f := n * n - 15 end; function g(n, k : integer) : integer; begin g := 2 * n + k end; BEGIN readln(k); a : = 1; while f(a) < g(a,k) do a := a + 1; write (a) END.
Си Алгоритмический язык
#include <stdio.h> long f(long n) { return n * n - 15; } long g(long n, long k) { return 2 * n + k; } void main () ( long k, a; scant("%ld", &k); a = 1 ; while ( f (a) < g(a,k)) a = a + 1; printf("%ld", a); } алг нач цел к, а ввод к а : = 1 нц пока F(а) < G(а,к) а : = а + 1 КЦ вывод а КОН алг цел F(цел п) нач знач : = п * п - 15 КОН алг цел G(цел п) нач знач : = 2 * п + к КОН
Ответ:
22
23
У исполнителя Утроитель две команды, которым присвоены номера:
1. прибавь 2,
2. умножь на 3.
Первая из них увеличивает число на экране на 2, вторая утраивает его.
Программа для Утроителя — это последовательность команд.
Сколько есть программ, которые число 1 преобразуют в число 27?
Ответ:.
Сколько существует различных наборов значений логических переменных хр х2, ... хп, х12,
которые удовлетворяют всем перечисленным ниже условиям?
(*! V^2)A((^ V^x2)->(^x3 V^4))“ 1
(*3 V*4) А((^з V^4) V^Xe)) = 1
(xs V*6) A((^5 V^6) -> (-x7 V^8)) = 1
(x7 Vx8) A((^x7 V-x8) -> <-x9 V^X1O)) = 1
(Xg V*10) A((^*9 V^10) -> (’xil V^12)) = 1
(Хц Vx12)=1
В ответе не нужно перечислять все различные наборы значений хр х2, ... хп, х12, при ко-
торых выполнена данная система равенств. В качестве ответа вам нужно указать количество
таких наборов.
Ответ:.
Не забудьте перенести все ответы в бланк ответов № 1 в соответствии с инструкцией
по выполнению работы.
Часть 2
Для записи ответов на задания этой части (24—27) используйте БЛАНК ОТВЕТОВ № 2.
Запишите сначала номер задания (24, 25 и т. д.), а затем полное решение. Ответы записы-
вайте чётко и разборчиво.
24
Требовалось написать программу, которая вводит с клавиатуры последовательность нату-
ральных чисел, оканчивающихся нулём, и выводит на экран сумму чётных чисел среди этой
последовательности. Известно, что в последовательность не пуста и в ней есть чётные числа.
Программист торопился и написал программу неправильно.
Паскаль Бейсик
var a, s: integer; begin read(a); s : = 0 ; while a > 0 do begin read(a); if a mod 2=0 then s : = s + a end; writein (s) end. INPUT a s = 0 WHILE a > 0 INPUT a IF a MOD 2=0 THEN s = s + a ENDIF WEND PRINT s END
Си Алгоритмический язык
#include<stdio.h> int main() { int a, s; scanf("%d", &a); s = 0; while (a > 0) { алг нач цел a, s ввод а s : = 0 нц пока а > 0 ввод а если mod(а,2) = 0
scanf("%d", &a); if (a % 2 == 0) s = s + a; } printf("%d", s); } ТО s : = з + а все кц ВЫВОД 8 кон
Выполните следующие действия:
1. Напишите, что выведет программа при вводе чисел 50 2 14 0.
2. Приведите пример такой входной последовательности, при которой программа работает
верно.
3. Укажите все ошибки в программе и исправьте их. Для этого для каждой ошибки: выпи-
шите строку, которая написана неправильно и приведите правильный вариант строки.
25 Дан целочисленный массив из 40 элементов. Элементы массива могут принимать произ-
вольные значения. Опишите на русском языке или на одном из языков программирования ал-
горитм, который находит и выводит номер третьего положительного элемента массива (если из
массива вычеркнуть все неположительные элементы, этот элемент стоял бы в получившемся
массиве на третьем месте). Если в массиве меньше, чем три положительных элемента, вывести
об этом сообщение.
Исходные данные объявлены так, как показано ниже. Запрещается использовать перемен-
ные, не описанные ниже, но разрешается не использовать часть из них.
Паскаль Бейсик
const N = 40; var a: array [1..N] of integer; i, j, k: integer; begin for i:=l to N do readln(a [i]); end. N = 40 DIM A(N) AS INTEGER DIM I, J, К AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I END
СИ Алгоритмический язык
♦include <stdio.h> ♦define N 40 void main(void) {int a[N]; int i, j, k; for (i = 0; i < N; i++) scanf ("%d", &a[i] ) ; } алг нач цел N = 40 целтаб а[1:N] цел i, j, k нц для i от 1 до N ввод а[i] КЦ кон
Русский (естественный) язык
Объявляем массив А из 40 элементов. Объявляем целочисленные переменные I, J, К. В цикле от 1 до 40 вводим элементы массива А с 1-го по 40-й.
В качестве ответа вам необходимо привести фрагмент программы (или описание алгоритма
на естественном языке), который должен находиться на месте многоточия. Вы можете запи-
сать решение также на другом языке программирования (укажите название и используемую
версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом
случае вы должны использовать те же самые исходные данные и переменные, какие были пред-
ложены в условии (например, в образце, записанном на естественном языке).
26 Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней.
Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу
один или три камня или увеличить количество камней в куче в два раза. Например, имея кучу
из 15 камней, за один ход можно получить кучу из 16, 18 или 30 камней. У каждого игрока,
чтобы делать ходы, есть неограниченное количество камней.
Игра завершается в тот момент, когда количество камней в куче становится не менее 24.
Победителем считается игрок, сделавший последний ход, т. е. первым получивший кучу, в ко-
торой будет 24 или больше камней.
В начальный момент в куче было S камней, 1 S *5 23.
Говорят, что игрок имеет выигрышную стратегию, если он может выиграть при любых хо-
дах противника. Описать стратегию игрока — значит описать, какой ход он должен сделать
в любой ситуации, которая ему может встретиться при различной игре противника.
Выполните следующие задания. Во всех случаях обосновывайте свой ответ.
1. а. Укажите все такие значения числа S, при которых Петя может выиграть в один ход.
Обоснуйте, что найдены все нужные значения S, и укажите выигрывающий ход для каждого
указанного значения S.
б. Укажите такое значение S, при котором Петя не может выиграть за один ход, но при лю-
бом ходе Пети Ваня может выиграть своим первым ходом. Опишите выигрышную стратегию
Вани.
2. Укажите два значения S, при которых у Пети есть выигрышная стратегия, причём
(а) Петя не может выиграть за один ход и (б) Петя может выиграть своим вторым ходом неза-
висимо от того, как будет ходить Ваня. Для каждого указанного значения S опишите выигрыш-
ную стратегию Пети.
3. Укажите такое значение S, при котором:
— у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым хо-
дом при любой игре Пети, и
— у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
Для указанного значения S опишите выигрышную стратегию Вани. Постройте дерево всех
партий, возможных при этой выигрышной стратегии Вани (в виде рисунка или таблицы). На
ребрах дерева указывайте, кто делает ход, в узлах — количество камней в куче.
27 В секретной службе некоторой страны работает N сотрудников (N < 40 000). Каждый со-
трудник имеет свой собственный уникальный номер, совпадающий с порядковым номером
в ведомости на зарплату. Специальная пропускная система на входе фиксирует номер каждо-
го сотрудника, пришедшего на работу. В середине дня начальник заподозрил, что, возможно,
один из сотрудников на работу не пришел. Он запросил у пропускной системы список пришед-
ших сотрудников.
Вам нужно написать эффективную программу, которая определяет, все ли сотрудники
пришли на работу, и вывести на экран список номеров всех пришедших сотрудников, отсорти-
рованный по порядку в зарплатной ведомости.
На вход программе подаётся:
— в первой строке: количество сотрудников в службе N,
— во второй строке: последовательность номеров сотрудников, заканчивающийся нулём
(этот ноль служит признаком окончания последовательности).
Программа должна вывести требуемую последовательность, если один из сотрудников не
пришёл на работу, или сообщение «Все пришли», если прогульщика нет.
Пример входной строки:
5
3 2 5 1 4 0
Пример выходных данных:
Все пришли
Другой пример входной строки:
5
3 5 14 0
Пример выходных данных:
13 4 5
ВАРИАНТ 14
Часть 1
Ответами к заданиям 1—23 являются число, последовательность букв или цифр, кото-
рые следует записать в БЛАНК ОТВЕТОВ № 1 справа от номера соответствующего зада-
ния, начиная с первой клеточки, без пробелов, запятых и других дополнительных симво-
лов. Каждый символ пишите в отдельной клеточке в соответствии с приведёнными в бланке
образцами.
Сколько значащих нулей в двоичной записи числа 237?
Ответ:,
2
Логическая функция F задаётся выражением (у Д-г) V(^x А^г).
На рисунке приведён фрагмент таблицы истинности функции F, содержащий все наборы
аргументов, при которых функция F истинна.
Определите, какому столбцу таблицы истинности функции F соответствует каждая из пере-
менных х, у, г.
Перем. 1 Перем. 2 Перем. 3 Функция
??? ??? ??? F
0 0 0 1
1 0 0 1
1 0 1 1
В ответе напишите буквы х, у, z в том порядке, в котором идут соответствующие им столбцы
(сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая второ-
му столбцу; затем — буква, соответствующая третьему столбцу). Буквы в ответе пишите под-
ряд, никаких разделителей между буквами ставить не нужно.
Пример. Пусть задано выражение х у, зависящее от двух переменных х и у, и таблица
истинности:
Перем. 1 Перем. 2 Функция
??? ??? F
0 0 1
0 1 0
1 0 1
1 1 1
Тогда первому столбцу соответствует переменная у, а второму столбцу — переменная х.
В ответе нужно написать: ух.
Ответ:
3
На рисунке справа схема дорог Н-ского района изображена в виде графа, в таблице содер-
жатся сведения о длинах этих дорог (в километрах).
П1 П2 ПЗ П4 П5 116 П7 П8
П1 10 14 21
П2 11 18
ПЗ 11 23
П4 7 25
П5 25 12
П6 10 19
П7 14 18 19
П8 21 23 12 —
Так как таблицу и схему рисовали независимо друг от друга, то нумерация населённых пун-
ктов в таблице никак не связана с буквенными обозначениями на графе. Определите, какова
длина дороги и пункта А в пункт Г. В ответе запишите целое число — так, как оно указано
в таблице.
Ответ:.
4 Дан фрагмент базы данных, содержащий информацию о родственных отношениях. Опре-
делите на основании приведённых данных ID дяди Сорт А.К. (Дядя — брат отца или матери,
а также муж тети (сестры отца или матери)).
Таблица 1
ID Фамилия И.О. Пол
1453 Дени К.Д. пт/* Ла
2185 Ирта О.Б. пт/* Ла
2605 Гано И.Е. пт/* ЛА
3474 Ивенко Д.Я. м
4218 Бабенко А.Е. м
5363 Марченко Е.Е. м
5771 Арне А.Е. пт/» Ла
7148 Камо Е.А. м
7814 Исава Г. А. пт/» ЛА
8208 Сорт А.К. пт/» ЛА
Ответ:
Таблица 2
1В_Родителя 1В_Ребёнка
5363 4218
2185 4218
7148 5363
1453 5363
3474 1453
7814 1453
7148 2605
1453 2605
2605 8208
5363 5771
... ...
5 Для кодирования некоторой последовательности, состоящей из букв А, Б, В, Г и Д, исполь-
зуется неравномерный двоичный код, позволяющий однозначно декодировать полученную
двоичную последовательность. Вот этот код: А-010, Б-011, В-000, Г-001. Каким кодовым сло-
вом должна кодироваться буква Д? Если таких вариантов несколько, укажите самый короткий.
Ответ:
6
В некоторой информационной системе информация кодируется двоичными шестиразряд-
ными словами. При передаче данных возможны их искажения, поэтому в конец каждого сло-
ва добавляется седьмой (контрольный) разряд таким образом, чтобы сумма разрядов нового
слова, считая контрольный, была чётной. Например, к слову 101101 справа будет добавлен 0,
а к слову 010110 — 1.
После приема слова производится его обработка. При этом проверяется сумма его разря-
дов, включая контрольный. Если она нечётна, это означает, что при передаче этого слова про-
изошёл сбой, и оно автоматически заменяется на зарезервированное слово 0000000. Если она
чётна, это означает, что сбоя не было или сбоев было больше одного. В этом случае принятое
слово не изменяется.
Приведём фрагмент кодовой таблицы, используемый в данной задаче:
Буква Кодовое слово Примечание
X 000000 сбой
А 101011
В 011001
С 110111
D 110110
Исходное сообщение АВС было передано в виде:
1010110 0110011 1101111
И затем было принято в виде:
1110110 0110001 1101100.
Как будет выглядеть принятое сообщение после обработки? В ответе запишите последова-
тельность букв без пробелов и знаков препинания.
Ответ:•
7
Дан фрагмент электронной таблицы.
А В С D
1 3 5 4
2 10 =с$з+вз 1 2
3 20 =С$2+$СЗ 6 7
Чему станет равным значение ячейки А1, если в неё скопировать формулу из ячейки В2?
Примечание: знак $ обозначает абсолютную адресацию.
Ответ:_____________________________________________________________________________
8
Определите, что будет напечатано в результате выполнения следующего фрагмента про-
граммы:
Бейсик Паскаль
DIM k, s AS INTEGER s = 1 FOR к = 4 TO 7 s = s * к NEXT к PRINT s var k, s : integer; begin s : = 1; for к := 4 to 7 do s ; = s * к ; write (s); end.
Си Алгоритмический язык
{ int k, s; s = l; for(k=4 ; к<=7 ; к++) s = s * к ; printf ("%d", s); } нач цел k, s з : = 1 нц для к от 4 до 7 з : = з * к КЦ ВЫВОД 3 КОН
Ответ:.
9 Производится звукозапись музыкального фрагмента в формате квадро (четырёхканальная
запись) с частотой дискретизации 32 кГц и 24-битным разрешением. Результаты записывают-
ся в файл, сжатие данных не производится; размер полученного файла 90 Мбайт. Затем про-
изводится повторная запись этого же фрагмента в формате стерео (двухканальная запись) с
частотой дискретизации 64 кГц и 16-битным разрешением. Сжатие данных не производилось.
Укажите размер файла в Мбайт, полученного при повторной записи. В ответе запишите только
целое число, единицу измерения писать не нужно.
Ответ:.
10 Вася и Петя передают друг другу сообщения, используя синий и красный фонарики. Эти
они делают, включая фонарики последовательно на одинаково короткое время в некоторой
комбинации. Количество вспышек в одном сообщении — от 1 до 5. Сколько различных сообще-
ний могут передавать мальчики? .
Ответ:.
11 Алгоритм вычисления значения функции F(n), где п — натуральное число, задан следую-
щими соотношениями:
F(n) = F(n - l)+F(n/2), при п > 1 и п кратно 2,
F(n) = F(n - 1)+F(n - 2), при п > 1 и п не кратно 2,
F(l)=l.
Чему равно значение функции F(8)? В ответе запишите только натуральное число.
Ответ:.
12 В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, ка-
кая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой
сети. Обычно маска записывается по тем же правилам, что и IP-адрес. Адрес сети получается
в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.
По заданным IP-адресу узла и маске определите адрес сети.
IP-адрес узла: 174.214.157.39
Маска: 255.255.240.0
При записи ответа выберите из приведённых в таблице чисел четыре элемента IP-адреса
и запишите в нужном порядке соответствующие им буквы. Точки писать не нужно.
А В С D Е F G Н
0 39 144 157 174 214 240 255
Пример. Пусть искомый IP-адрес 192.168.128.0, и дана таблица
А В С D Е F G Н
128 168 255 8 127 0 17 192
В этом случае правильный ответ будет записан в виде: HBAF
Ответ:
13
Для регистрации на сайте онлайн-магазина пользователю предлагается придумать пароль,
состоящий из 7 символов. Правилами безопасности сайта разрешается использовать только
строчные буквы латинского алфавита и цифры в любом порядке. При этом используется по-
символьное кодирование и в памяти сервера для кодирования каждого символа использует-
ся минимально возможное и одинаково целое количество бит. А для хранения всего пароля
используется минимально возможное целое количество байт. Какое количество информации
(в байтах) требуется для хранения паролей 40 пользователей?
Ответ:.
14
Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетча-
той плоскости включает 4 команды-приказа и 4 команды проверки условия.
Команды-приказы:
вверх вниз влево вправо
При выполнении любой из этих команд РОБОТ перемещается на одну клетку соответствен-
но: вверх Т, вниз Ф, влево <—, вправо
Если РОБОТ начнёт движение в сторону находящейся рядом с ним стены, то он разрушится
и программа прервётся.
Другие четыре команды проверяют истинность условия отсутствия стены у каждой сторо-
ны той клетки, где находится РОБОТ:
сверху свободно снизу свободно слева свободно справа свободно
Цикл
ПОКА <условие>
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ <условие>
ТО команда!
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда! (если условие истинно) или команда2 (если условие ложно).
Сколько клеток лабиринта соответствует требованию, что, начав движение в ней и выпол-
нив предложенную программу, РОБОТ уцелеет и остановится в закрашенной клетке (клет-
ка F6)?
НАЧАЛО
ПОКА ссправа свободно ИЛИ снизу свободно?
ПОКА ссправа свободно?
вправо
КОНЕЦ ПОКА
влево
ПОКА сснизу свободно?
вниз
КОНЕЦ ПОКА
ЕСЛИ ссправа свободно?
вправо
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Ответ:
15
На рисунке — схема дорог, связывающих города
А, Б, В, Г, Д, Е,Ж, 3,И, К.
По каждой дороге можно двигаться только в од-
ном направлении, указанном стрелкой.
Сколько существует различных путей из города А
в город К?
Ответ:.
16 Укажите через запятую в порядке возрастания все десятичные числа, не превосходящие 25,
запись которых в троичной системе счисления оканчивается на 21.
Ответ:.
17 В языке запросов к поисковому серверу для обозначения логической операции «ИЛИ» ис-
пользуется символ «|», а для логической операции «И» — «&». В таблице приведено количество
страниц, которое находит поисковая система по каждому запросу.
Запрос Количество найденных страниц
Соус & (Кетчуп | Молоко) 12300
Соус & Кетчуп & Молоко 0
Соус & Молоко 9700
Какое количество страниц будет найдено по запросу: Соус & Кетчуп ?
Считается, что все запросы выполнялись практически одновременно, так что набор страниц,
содержащих все искомые слова, не изменялся за время выполнения запросов.
Ответ:.
18 Обозначим через пг&п. поразрядную конъюнкцию неотрицательных целых чисел тип.
Так, например, 14&5 = 1110,, & 01012 = 01002 = 4.
Для какого наименьшего неотрицательного целого числа А формула
(х&А = 0 Дх&Зб = 0) —> х&46 = 0
тождественно истинна (то есть принимает значение 1 при любом неотрицательном целом
значении переменной х)?
Ответ:.
19
В программе используется целочисленный массив А с индексами от 0 до 9. Значения эле-
ментов массива равны 6; 5; 4; 7; 10; 6; 9; 11; 7; 8 соответственно, т. е. А[0] = 6; А[1] = 5 и т. д.
Определите значение переменной k после выполнения следующего фрагмента программы,
записанной ниже на разных языках программирования.
Бейсик Паскаль
к = 0 m = А[1] FOR i = 1 ТО 9 IF A(i) > m THEN к = к + 1 ENDIF NEXT i к := 0; m : = A [ 1 ] ; for i := 1 to 9 do if A[i] > m then к := к + 1;
Си Алгоритмический язык
к = 0; m = А [ 1 ] ; for (i=l ; i<=9 ; i++) if(A[i] > m) к = к + 1; k := 0 m := A[l] нц для i от 1 до 9 если А [ i ] > m ТО k := к + 1 все КЦ
Ответ:__________________________________________________________________________________
20
Ниже на четырёх языках записан алгоритм. Получив на вход число х, этот алгоритм пе-
чатает два числа: L и М. Укажите наименьшее из таких чисел х, при вводе которых алгоритм
печатает сначала 0, а потом 24.
Бейсик Паскаль
DIM X, М, L AS INTEGER INPUT X М = 1 L = 0 WHILE X > 0 M = M * (X MOD 10) IF X MOD 10 > 5 THEN L = L + 1 ENDIF X = X\10 WEND PRINT L PRINT M var x, M, L: integer; begin readln (x); M := 1; L := 0; while x > 0 do begin M := M * (x mod 10); if x mod 10 > 5 then L := L + 1; x := x div 10 end; writein(L); write(M) end.
Си Алгоритмический язык
#include<stdio.h> void main () { int x, M, L; scanf ("%d", &x); M = 1; L = 0; while (x > 0){ M = M * (x%10); if(x%10 > 5) L = L + 1; x = x/10; } printf("%d\n%d", L, M); } алг нач цел х, М, L ввод X М := 1 L := 0 нц пока х > 0 М := М * mod(х,10) если mod(х,10) > 5 ТО L := L + 1 все х := div(х,10) кц вывод L, нс, М кон
Ответ:
21 Определите, при каком наибольшем значении Ь в результате выполнения следующего ал-
горитма будет напечатано число 100 (для Вашего удобства алгоритм представлен на четырёх
языках):
Бейсик Паскаль
DIM А, В, Т, К AS INTEGER var a,b,t,k : integer;
А = 15 function F(x : integer) : integer;
INPUT В begin
К = 0 if x mod 10 < 5 thbn
FOR Т = А ТО В F := 1
К = К + F(T) else
NEXT Т F := 0
PRINT К end; BEGIN
FUNCTION F (х) a := 15;
IF х MOD 10 < 5 THEN readln(b);
F = 1 k := 0;
ELSE for t := a to b do
F = 0 begin
END IF k := k + F(t)
END FUNCTION end; write (k) END.
Си Алгоритмический язык
int F(int x) алг
{ нач
if (x%10 < 5) цел a, b, t, к
return 1; а : = 15
else ввод b
return 0; к := 0
} нц для t от а до b
void main () к := к + F(t)
{ КЦ
int a, b, t, k; вывод к
a = 15; scanf("%d",&b); КОН
k = 0; алг цел F(цел х)
for (t = a; t <= b; t++) нач
{ если mod(x,10)<5
k = k + F (t) ; ТО
знач := 1
printf("%d", k); иначе
} знач := 0 все КОН
Ответ:,
22 У исполнителя Удвоитель две команды, которым присвоены номера:
1. прибавь 1,
2. умножь на 2.
Первая из них увеличивает число на экране на 1, вторая удваивает его.
Программа для Удвоителя — это последовательность команд.
Сколько есть программ, которые число 4 преобразуют в число 29?
Ответ:
23
Сколько существует различных наборов значений логических переменных хр х2, ... х9, х10,
которые удовлетворяют всем перечисленным ниже условиям?
(Х1 -* х2> А((Х, = Х2) -> (*з = Х4)) = 1
(х3 х4) Л((х3 = Х4) (х5 = х6)) = 1
(х5 х6) Л((х6 = хе) -> (х7 = Х8)) = 1
(х7 -> х8) Л((х7 S Х8) -> (х9 = х10)) = 1
В ответе не нужно перечислять все различные наборы значений хр х2, ... х9, х10, при ко-
торых выполнена данная система равенств. В качестве ответа вам нужно указать количество
таких наборов.
Ответ: .
Не забудьте перенести все ответы в бланк ответов № 1 в соответствии с инструкцией
по выполнению работы.
Часть 2
Для записи ответов на задания этой части (24—27) используйте БЛАНК ОТВЕТОВ № 2.
Запишите сначала номер задания (24, 25 и т. д.), а затем полное решение. Ответы записы-
вайте чётко и разборчиво.
24 Требовалось написать программу, которая вводит с клавиатуры последовательность из
п целых чисел (п = 4), и выводит на экран произведение положительных чисел среди этой по-
следовательности.
Если в последовательности нет положительных чисел, программа выводит «NO».
Известно, что вводимые числа не превышают по модулю 1000.
Программист торопился и написал программу неправильно.
Паскаль Бейсик
const п = 4; var i, a, prod, count: integer; begin prod := 0; count := 0; for i := 1 to n do begin read(a) ; if a > 0 then begin prod := prod + a; count := count + 1 end; end; if count > 0 then writein(prod) else writein ( 'NO') end. CONST N = 4 DIM I, A, PROD, COUNT AS INTEGER PROD := 0 COUNT := 0 FOR I = 1 TO N INPUT A IF A > 0 THEN PROD = PROD + A COUNT = COUNT + 1 END IF NEXT I IF COUNT > 0 THEN PRINT PROD ELSE PRINT "NO" END IF END
Си Алгоритмический язык
♦include<stdio.h> #define n 4 int main() { int i, a, prod, count; prod = 0; count = C; for (i = 0 ; i < n ; i++) { scanf("%d", &a); if (a > 0) { prod = prod + a; count = count + 1; ) } if (count > 0) printf("%d", prod); else printf("NO"); } алг нач цел п = 4 цел a, i, prod, count prod := 0 count := 0 нц для i от 1 до n ввод а если а > 0 ТО prod := prod + а count := count + 1 все кц если count > 0 то вывод prod иначе вывод 'NO’ все кон
Выполните следующие действия:
1. Напишите, что выведет программа при вводе чисел -1 2 -3 4.
2. Приведите пример такой входной последовательности, при которой программа работает
верно.
3. Укажите все ошибки в программе и исправьте их. Для этого для каждой ошибки: выпи-
шите строку, которая написана неправильно и приведите правильный вариант строки.
25
Дан целочисленный массив из 40 элементов. Элементы массива могут принимать значения
от -10000 до 10000. Опишите на русском языке или на одном из языков программирования
алгоритм, который находит и выводит значение минимального трёхзначного положительного
числа, которое не оканчивается на 4. Если такого элемента нет, вывести на экран «NO».
Исходные данные объявлены так, как показано ниже. Запрещается использовать перемен-
ные, не описанные ниже, но разрешается не использовать часть из них.
Паскаль Бейсик
const N = 40; var a: array [1..N] of integer; i, k, min: integer; begin for i := 1 to N do readln(a[i]); N = 40 DIM A(N) AS INTEGER DIM I, K, MIN AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I
end. END
СИ Алгоритмический язык
♦include <stdio.h> ♦ define N 40 void main(void) (int a [N]; int i, k, min; for (i = 0; i < N; i++) scanf ("%d", &a[i]); алг нач цел N = 40 целтаб а[1:N] цел i, k, min нц для i от 1 до N ввод а[i] кц
} кон
Русский (естественный) язык
Объявляем массив А из 40 элементов. Объявляем целочисленные переменные I, К, MIN. В цикле от 1 до 40 вводим элементы массива А с 1-го по 40-й.
В качестве ответа вам необходимо привести фрагмент программы (или описание алгоритма
на естественном языке), который должен находиться на месте многоточия. Вы можете запи-
сать решение также на другом языке программирования (укажите название и используемую
версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом
случае вы должны использовать те же самые исходные данные и переменные, какие были пред-
ложены в условии (например, в образце, записанном на естественном языке).
26 Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней.
Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу
один или два камня или увеличить количество камней в куче в три раза. Например, имея кучу
из 15 камней, за один ход можно получить кучу из 16, 17 или 45 камней. У каждого игрока,
чтобы делать ходы, есть неограниченное количество камней.
Игра завершается в тот момент, когда количество камней в куче становится не менее 30.
Победителем считается игрок, сделавший последний ход, т. е. первым получивший кучу, в ко-
торой будет 30 или больше камней.
В начальный момент в куче было S камней, 1 S «2 29.
Говорят, что игрок имеет выигрышную стратегию, если он может выиграть при любых хо-
дах противника. Описать стратегию игрока — значит описать, какой ход он должен сделать
в любой ситуации, которая ему может встретиться при различной игре противника.
Выполните следующие задания. Во всех случаях обосновывайте свой ответ.
1. а. Укажите все такие значения числа S, при которых Петя может выиграть в один ход.
Обоснуйте, что найдены все нужные значения S, и укажите выигрывающий ход для каждого
указанного значения S.
б. Укажите такое значение S, при котором Петя не может выиграть за один ход, но при лю-
бом ходе Пети Ваня может выиграть своим первым ходом. Опишите выигрышную стратегию
Вани.
2. Укажите два значения S, при которых у Пети есть выигрышная стратегия, причём
(а) Петя не может выиграть за один ход и (б) Петя может выиграть своим вторым ходом неза-
висимо от того, как будет ходить Ваня. Для каждого указанного значения S опишите выигрыш-
ную стратегию Пети.
3. Укажите такое значение S, при котором:
— у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым хо-
дом при любой игре Пети, и
— у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
Для указанного значения S опишите выигрышную стратегию Вани. Постройте дерево всех
партий, возможных при этой выигрышной стратегии Вани (в виде рисунка или таблицы). На
рёбрах дерева указывайте, кто делает ход, в узлах — количество камней в куче.
27 На вход программе подаётся последовательность символов, заканчивающаяся символом
«#». Другие символы «#» во входной последовательности отсутствуют.
Программа должна вывести на экран символы латинского алфавита, в порядке увеличения
частоты встречаемости во входной последовательности.
Если буква во входной последовательности не встречается, её выводить не нужно.
Если несколько букв встречаются одинаковое количество раз, программа должна вывести
их в алфавитном порядке.
Строчные и прописные буквы не различаются.
Напишите эффективную, в том числе и по используемой памяти, программу (укажите ис-
пользуемую версию языка программирования, например, Borland Pascal 7.0), которая должна
решать поставленную задачу.
Пример входных данных:
Aced, ccedaa f#
Пример выходных данных:
FDEAC
ВАРИАНТ 15
Часть 1
Ответами к заданиям 1—23 являются число, последовательность букв или цифр, кото-
рые следует записать в БЛАНК ОТВЕТОВ № 1 справа от номера соответствующего зада-
ния, начиная с первой клеточки, без пробелов, запятых и других дополнительных симво-
лов. Каждый символ пишите в отдельной клеточке в соответствии с приведёнными в бланке
образцами.
1
Даны 4 целых числа, записанных в восьмеричной системе счисления: 26 lg, 263g, 265g, 267g.
Сколько среди них чисел, которые меньше чем В616?
Ответ:.
2
Логическая функция F задается выражением (^х V^у) /\(2\/^У)-
На рисунке приведен фрагмент таблицы истинности функции F, содержащий все наборы
аргументов, при которых функция F истинна.
Определите, какому столбцу таблицы истинности функции F соответствует каждая из пере-
менных х, у, г.
Перем. 1 Перем. 2 Перем. 3 Функция
??? ??? ??? F
0 0 0 1
0 1 0 1
0 1 1 1
1 0 0 1
1 1 0 1
В ответе напишите буквы х, у, г в том порядке, в котором идут соответствующие им столбцы
(сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая второ-
му столбцу; затем — буква, соответствующая третьему столбцу). Буквы в ответе пишите под-
ряд, никаких разделителей между буквами ставить не нужно.
Пример. Пусть задано выражение х -> у, зависящее от двух переменных х и у, и таблица
истинности:
Перем. 1 Перем. 2 Функция
??? ??? F
0 0 1
0 1 0
1 0 1
1 1 1
Тогда первому столбцу соответствует переменная у, а второму столбцу соответствует пере-
менная х. В ответе нужно написать: ух.
Ответ:
3 Между четырьмя местными аэропортами: ЛЕСНОЙ, КРАЙ, ЗИМА и ПОЛЯНА ежедневно
выполняются авиарейсы. Приведён фрагмент расписания перелётов между ними.
Аэропорт вылета Аэропорт прилёта Время вылета Время прилёта
ЛЕСНОЙ ПОЛЯНА 13:30 18:10
ЗИМА КРАЙ 14:20 16:10
ЗИМА ЛЕСНОЙ 14:10 16:20
ПОЛЯНА ЗИМА 17:05 19:20
ЛЕСНОЙ ЗИМА 12:10 14:15
КРАЙ ЗИМА 12:30 14:40
ЛЕСНОЙ КРАЙ 12:20 14:10
КРАЙ ПОЛЯНА 13:45 15:50
ПОЛЯНА КРАЙ 14:10 16:25
ЗИМА ПОЛЯНА 14:25 16:30
Путешественник оказался в аэропорту ЛЕСНОЙ в полночь (0:00). Определите самое раннее
время, когда он может попасть в аэропорт ПОЛЯНА.
Ответ:.
4
В папке D: \Pictures\School находятся следующие файлы и только они:
kino.gif
vano.jpg
ono.jpg
domino.gif
no.jpg
К этим файлам применили следующую операцию: файлы, имена которых удовлетворяют
маске * ?no. *д* переместили в папку « . . » относительно текущей. Сколько файлов останется
в исходной папке?
Ответ:.
5 Для кодирования некоторой последовательности, состоящей из букв А, В, С, D и Е, исполь-
зуется неравномерный двоичный код, позволяющий однозначно декодировать полученную
двоичную последовательность.
Вот этот код: А-101, В-11, С-010, D-00, Е-011. Можно ли сократить для одной из букв дли-
ну кодового слова так, чтобы код по-прежнему можно было декодировать однозначно? Коды
остальных букв меняться не должны.
Запишите ответ в виде: буква, кодовое слово. Например, если бы ответ был «Для буквы F
новый код будет 110», ответ нужно записать как: F110. Если невозможно ничего сократить, за-
пишите в ответе просто цифру 0.
Ответ:.
6
У исполнителя Удвоитель две команды, которым присвоены номера:
1. умножь на 2,
2. прибавь 3.
Первая из них удваивает число на экране, вторая — увеличивает его на 3.
Запишите порядок команд в программе преобразования числа 2 в число 44, содержащей
не более 5 команд, указывая лишь номера команд. (Например, 21211 — это программа
прибавь 3
умножь на 2
прибавь 3
умножь на 2
умножь на 2,
которая преобразует число 1 в 44.)
(Если таких программ более одной, то запишите любую из них.)
Ответ:.
7 В электронной таблице в ячейке С5 записана формула, которая вычисляет результат сложе-
ния значения ячейки Е4 со значением ячейки D3. Формулу из ячейки С5 скопировали в ячейку
Вб. Какое количество следующих утверждений не противоречит условию?
1) В ячейке Вб вычисляется результат сложения значения ячейки D5 со значением ячейки С4
2) В ячейке Вб вычисляется результат сложения значения ячейки D5 со значением ячейки D3
3) В ячейке Вб вычисляется результат удвоения значения ячейки D4
4) В ячейке Вб вычисляется результат сложения значения ячейки Е4 со значением ячейки D3
Ответ:.
8 Определите, что будет напечатано в результате выполнения следующего фрагмента про-
граммы:
Бейсик Паскаль
DIM k, s AS INTEGER к = 1000 s = 2 WHILE s < 600 s = s * 2 к = к - 5 WEND PRINT к var k, s: integer; begin к := 1000; s : = 2 ; while s < 600 do begin s s * 2; к := к - 5 end; write(k); end.
Си Алгоритмический язык
{ int к, s; к = 1000; 3 = 2; while (s < 600) { s = s * 2 ; к = к - 5; } printf("%d", k) ; } нач цел k, s k := 1000 s : = 2 нц пока s < 600 s := s * 2 k := k - 5 КЦ вывод k KOH
Ответ:,
9 Вася имеет высокоскоростной доступ в сеть Интернет при помощи спутниковой тарелки.
Пропускная способность канала получения данных со спутника составляет 8 Мбит/сек. Но эта
связь работает только в одну сторону (на приём). Для того, чтобы компьютер Васи мог отдавать
команды, какую информацию нужно передавать со спутника, Вася подключает к компьюте-
ру сотовый телефон, который может передавать в сеть информацию со скоростью не более 256
Кбит/сек. Вася хочет скачать файл объёмом 40 Мбайт. Информация со спутника поступает на
компьютер Васи фрагментами не более 1 Мбайта. Для получения каждого фрагмента компью-
тер Васи должен сначала передать в сеть набор инструкций суммарным объёмом 64 Кбайт. За
какое минимально возможное число секунд Вася может получить весь файл? В ответе запиши-
те только целое число, единицу измерения писать не нужно.
Ответ:.
10 Для кодирования 300 различных сообщений используют 5 последовательных цветовых
вспышек. Лампочки скольких различных цветов должны использоваться при передаче?
Ответ:.
11
Дан рекурсивный алгоритм F. Приведите последовательность чисел (без пробелов), напеча-
танных на экране при выполнении вызова F(l, 2)?
Бейсик Паскаль
SUB F(n,k) IF k = 0 THEN PRINT n ELSE F(n+2, k-1) F(n+4, k-1) END IF END SUB procedure F(n, k: integer); begin if k = 0 then write (n) else begin F(n+2, k-1); F(n+4, k-1) end end;
Си Алгоритмический язык
void F(int n){ if (k == 0) printf ("%d",n); else { F(n+2, k-1); F(n+4, k-1); } } алг F(цел n, k) нач если k = 0 то ВЫВОД n иначе F(n+2, k-1) F(n+4, k-1) все KOH
Ответ:.
12 В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая
часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети.
Обычно маска записывается по тем же правилам, что и 1Р-адрес, — в виде четырёх байтов, при-
чём каждый байт записывается в виде десятичного числа. При этом в маске сначала (в старших
разрядах) стоят единицы, а затем с некоторого разряда — нули.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному
IP-адресу узла и маске.
Например, если IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0, то адрес
сети равен 231.32.240.0.
Для узла с IP-адресом 83.242.147.102 адрес сети равен 83.242.144.0. Чему равно наиболь-
шее возможное количество единиц в разрядах маски?
Ответ:.
13 При регистрации в компьютерной системе каждому пользователю выдаётся пароль, состо-
ящий из 7 символов и содержащий только символы из 10-символьного набора: А, В, С, D, Е, F,
G, Н, К, L. В базе данных для хранения сведений о каждом пользователе отведено одинаковое
и минимально возможное целое число байт. При этом используют посимвольное кодирование
паролей, все символы кодируют одинаковым и минимально возможным количеством бит. Кро-
ме собственно пароля, для каждого пользователя в системе хранятся дополнительные сведе-
ния, для чего отведено целое число байт, одинаковое для всех пользователей.
Для хранения сведений о 30 пользователях потребовалось 480 байт. Сколько байт выделе-
но для хранения дополнительных сведений об одном пользователе? В ответе запишите только
целое число — количество байт.
Ответ:.
14
Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетча-
той плоскости включает 4 команды-приказа и 4 команды проверки условия.
Команды-приказы:
вверх вниз влево вправо
При выполнении любой из этих команд РОБОТ перемещается на одну клетку соответствен-
но: вверх Т, вниз Ф, влево вправо
Если РОБОТ начнёт движение в сторону находящейся рядом с ним стены, то он разрушится
и программа прервётся.
Другие четыре команды проверяют истинность условия отсутствия стены у каждой сторо-
ны той клетки, где находится РОБОТ:
сверху свободно снизу свободно слева свободно справа свободно
Цикл
ПОКА <условие>
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ <условие>
ТО команда!
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда! (если условие истинно) или команда2 (если условие ложно).
Сколько клеток лабиринта соответствует требованию, что, начав движение в ней и выпол-
нив предложенную программу, РОБОТ уцелеет и остановится в закрашенной клетке (клет-
ка F6)?
НАЧАЛО
ПОКА <справа свободно ИЛИ снизу свободно
ПОКА <справа свободно
вправо
КОНЕЦ ПОКА
ЕСЛИ сснизу свободно>
вниз
ИНАЧЕ
вверх
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
А В С D Е F
15
На рисунке — схема дорог, связывающих города А,
Б, В,Г,Д, Е, Ж, 3, И, К.
По каждой дороге можно двигаться только в одном
направлении, указанном стрелкой.
Сколько существует различных путей из города А в
город К?
Ответ:
16 Сколько единиц содержится в двоичной записи значения выражения:
440_gl5+254+7 9
Ответ:_______________________________________________________________________________
17
В языке запросов к поисковому серверу для обозначения логической операции «ИЛИ» ис-
пользуется символ «|», а для логической операции «И» — «&».В таблице приведено количество
страниц, которое находит поисковая система по каждому запросу.
Запрос Количество найденных страниц
Банан & Лимон 6700
Банан & Яблоко & Лимон 4300
(Банан & Яблоко) | (Банан & Лимон) 15600
Какое количество страниц будет найдено по запросу: Банан & Яблоко ?
Считается, что все запросы выполнялись практически одновременно, так что набор страниц,
содержащих все искомые слова, не изменялся за время выполнения запросов.
Ответ:.
18 Обозначим через т&п поразрядную конъюнкцию неотрицательных целых чисел тип. Так,
например, 14&5 = 11102 & 01012 = 01002 = 4.
Для какого наименьшего неотрицательного целого числа А формула
(х&43 * 0 /\х&А = 0) —> х&14 #= 0
тождественно истинна (т. е. принимает значение 1 при любом неотрицательном целом зна-
чении переменной х)?
Ответ:.
19
В программе используется целочисленный массив А с индексами от 0 до 9. Значения эле-
ментов массива равны 6; 5; 4; 7; 10; 6; 9; 11; 7; 8 соответственно, т. е. А[0] = 6; А[1] = 5 и т. д.
Определите значение переменной k после выполнения следующего фрагмента программы,
записанной ниже на разных языках программирования.
Бейсик Паскаль
к = 0 m = А(0) FOR i = 1 ТО 9 IF A(i) < m THEN к = к + A(i) ENDIF NEXT i к := 0; m : = A [ 0 ] ; for i := 1 to 9 do if Afi] < m then к := к + Afi];
Си Алгоритмический язык
к = 0; m = А (0) ; for (i=l ; i<=9 ; i++) if(A[i] < m) к = к + A [ i ] ; k := 0 m : = A (0 ) нц для i от 1 до 9 если A[i] < m TO k := k + A[i] все кц
Ответ:___________________________________________________________________________________
20
Ниже на четырёх языках записан алгоритм.
Получив на вход число х, этот алгоритм печатает число М.
Укажите наибольшее чётное число х, при вводе которого алгоритм печатает 256.
Бейсик Паскаль
DIM X, Y, L, M AS INTEGER var x, y, L, M: integer;
INPUT X begin
Y = X MOD 10 readln(x);
L = 0 у := x mod 10;
M = 1 L := 0;
WHILE L < X \ 10 M := 1;
M = M * Y while L < x div 10 do
L = L + 1 begin
WEND M := M * y;
PRINT M L := L + 1
end;
write(M)
end.
Си Алгоритмический язык
#include<stdio.h> алг
void main() нач
{ цел х, у, L, М
int x, у, L, M; ВВОД X
scanf("%d", &x); у := mod(х,10)
у = x % 10; L := 0
L = 0; М := 1
M = 1; нц пока L < div(х,10)
while (L < x / 10) М := М * у
{ L := L + 1
M - M * y; кц
L = L + 1; вывод М
} кон
—
printf("%d", M) ;
}
Ответ:
21
Определите, при каком наименьшем значении b в результате выполнения следующего ал-
горитма будет напечатано число 20 (для Вашего удобства алгоритм представлен на четырёх
языках):
Бейсик Паскаль
DIM А, В AS INTEGER INPUT В А = 0 WHILE F(А) < В А = А + 1 WEND PRINT А FUNCTION F (х) DIM I, S AS INTEGER S = 0 1 = 0 WHILE I < x S = S + 10 1 = 1 + 1 WEND F = S END FUNCTION var a,b : integer; function F(x : integer) : integer; var i,s : integer; begin s : = 0; i := 0; while i < x do begin s := s + 10; i := i + 1 end; F := s end; BEGIN readln(b); a : = 0; while F(a) < b do begin a := a + 1 end; write(a) END.
Си Алгоритмический язык
int F(int x) { int i,s; s = 0 ; i = 0; while(i < x) { s = s + 10; i = i + 1; ) return s; } void main() { int a, b; scant("%d",&b); a = 0 ; while (F(a) < b) { a = a + 1 ; } printfa); ( алг нач цел а, b ввод Ь а : = 0 нц пока F(а) < b а := а + 1 кц вывод а кон алг цел F(цел х) нач цел i, s s : = 0 i := 0 нц пока i < х s := s + 10 i := i + 1 кц знач := s кон
22
23
24
Исполнитель Июнь 12 преобразует число на экране.
У исполнителя есть две команды, которым присвоены номера:
1. Прибавить 3
2. Умножить на 2
Первая команда увеличивает число на экране на 3, вторая умножает его на 2.
Программа для исполнителя Июнь12 — это последовательность команд.
Сколько существует программ, для которых при исходном числе 2 результатом является чис-
ло 58 и при этом траектория вычислений содержит число 20?
Траектория вычислений программы — это последовательность результатов выполнения
всех команд программы. Например, для программы 121 при исходном числе 7 траектория будет
состоять из чисел 10, 20, 23.
Ответ:.
Сколько существует различных наборов значений логических переменных хр х2, ... х1Р х12,
которые удовлетворяют всем перечисленным ниже условиям?
(Xi х2) Д(х2 -> х4) Д(х3 -> х4) = 1
(х3 -> х4) /\(х* -> х3) Д(х5 -> х6) = 1
(х5 -4. Х6) Д (Х6 Х5) А (х7 -> Х8) = 1
(х7 -> Х8) А (Х8 -> Х7) А (Х9 -> Х1О) = 1
(х9 -> Х1О) А(х10 -> Х9) А(хп -> Х12) = 1
В ответе не нужно перечислять все различные наборы значений хр х2, ... х1р х12, при ко-
торых выполнена данная система равенств. В качестве ответа вам нужно указать количество
таких наборов.
Ответ:.
Не забудьте перенести все ответы в бланк ответов № 1 в соответствии с инструкцией
по выполнению работы.
Часть 2
Для записи ответов на задания этой части (24—27) используйте БЛАНК ОТВЕТОВ № 2.
Запишите сначала номер задания (24, 25 и т. д.), а затем полное решение. Ответы записы-
вайте чётко и разборчиво.
Требовалось написать программу, которая вводит с клавиатуры последовательность из
п целых чисел (п = 4), и выводит на экран сумму отрицательных чисел среди этой последо-
вательности. Если в последовательности нет отрицательных чисел, программа должна выве-
сти 0. Известно, что вводимые числа не превышают по модулю 1000. Программист торопился
и написал программу неправильно.
Паскаль Бейсик
const п = 4; var i, a, sum: integer; begin sum := 0; for i := 1 to n do begin read(a); if a < 0 then sum := a end; writein(a) end. CONST N = 4 DIM I, A, SUM AS INTEGER SUM := 0 FOR I = 1 TO N INPUT A IF A < 0 THEN SUM = A END IF NEXT I PRINT A END
Выполните следующие действия:
1. Напишите, что выведет программа при вводе чисел -1 13-5.
2. Приведите пример такой входной последовательности, при которой программа работает
верно.
3. Укажите все ошибки в программе и исправьте их. Для этого для каждой ошибки: выпи-
шите строку, которая написана неправильно и приведите правильный вариант строки.
25
Дан целочисленный массив из 40 элементов. Элементы массива могут принимать произ-
вольные значения. Опишите на русском языке или на одном из языков программирования ал-
горитм, который находит и выводит номера двух элементов массива, наименее отличающихся
друг от друга.
Исходные данные объявлены так, как показано ниже. Запрещается использовать перемен-
ные, не описанные ниже, но разрешается не использовать часть из них.
Паскаль Бейсик
const N = 40; var a: array [1..N] of integer; i, j, min, min2, s: integer; begin for i := 1 to N do readln(a[i]); N = 40 DIM A(N) AS INTEGER DIM I, J, MIN, MIN2 AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I
end. END
СИ Алгоритмический язык
♦include <stdio.h> ♦define N 40 void main(void) (int a[N]; int i, j, min, min2, s; for (i =0; i < N; i++) scanf ("%d", &a[i]); алг нач цел N = 40 целтаб a[l:N] цел i, j, MIN, MIN2, s нц для i от 1 до N ввод a[i] КЦ
} KQH
Русский (естественный) язык
Объявляем массив А из 40 элементов.
Объявляем целочисленные переменные I, J, MIN, MIN2, S.
В цикле от 1 до 40 вводим элементы массива А с 1-го по 40-й.
В качестве ответа вам необходимо привести фрагмент программы (или описание алгоритма
на естественном языке), который должен находиться на месте многоточия.
Вы можете записать решение также на другом языке программирования (укажите назва-
ние и используемую версию языка программирования, например Borland Pascal 7.0) или в
виде блок-схемы. В этом случае вы должны использовать те же самые исходные данные и пере-
менные, какие были предложены в условии (например, в образце, записанном на естественном
языке).
26 I Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней.
Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу
два или три камня или увеличить количество камней в куче в два раза. Например, имея кучу
из 15 камней, за один ход можно получить кучу из 17, 18 или 30 камней. У каждого игрока, что-
бы делать ходы, есть неограниченное количество камней.
Игра завершается в тот момент, когда количество камней в куче становится не менее 40.
Победителем считается игрок, сделавший последний ход, т. е. первым получивший кучу, в ко-
торой будет 40 или больше камней.
В начальный момент в куче было S камней, 1 < S < 39.
Говорят, что игрок имеет выигрышную стратегию, если он может выиграть при любых
ходах противника. Описать стратегию игрока — значит описать, какой ход он должен сделать
в любой ситуации, которая ему может встретиться при различной игре противника.
Выполните следующие задания. Во всех случаях обосновывайте свой ответ.
1. а. Укажите все такие значения числа S, при которых Петя может выиграть в один ход.
Обоснуйте, что найдены все нужные значения S, и укажите выигрывающий ход для каждого
указанного значения S.
б. Укажите такое значение S, при котором Петя не может выиграть за один ход, но при лю-
бом ходе Пети Ваня может выиграть своим первым ходом. Опишите выигрышную стратегию
Вани.
2. Укажите два значения S, при которых у Пети есть выигрышная стратегия, причём
(а) Петя не может выиграть за один ход и (б) Петя может выиграть своим вторым ходом неза-
висимо от того, как будет ходить Ваня. Для каждого указанного значения S опишите выигрыш-
ную стратегию Пети.
3. Укажите такое значение S, при котором:
— у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым хо-
дом при любой игре Пети, и
— у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
Для указанного значения S опишите выигрышную стратегию Вани. Постройте дерево всех
партий, возможных при этой выигрышной стратегии Вани (в виде рисунка или таблицы). На
рёбрах дерева указывайте, кто делает ход, в узлах — количество камней в куче.
27 При программировании школьной тестирующей системы по английскому языку выясни-
лось, что файлы с вопросами к тестам легко доступны и каждый может перед тестом открыть
их и заранее узнать вопросы. Было решено закодировать файлы. Для этого придумали следу-
ющий алгоритм.
Каждая строка файла кодируется отдельно.
В каждой строке ищутся отдельные слова, и все символы слова сдвигаются по алфавиту
циклически вправо на длину слова.
Словом считается любая последовательность подряд идущих символов латинского алфави-
та, строчных и прописных.
Циклический сдвиг символа по алфавиту вправо на X — замена символа на символ, стоя-
щий в алфавите на X позиций дальше. Если при этом происходит выход за пределы алфавита,
счёт начинается с начала алфавита.
Пример циклического сдвига символов на 3 позиции:
буква «Е» превращается в букву «Н», буква «t> — в букву «ws>, буква «Y» — в букву «В».
Напишите эффективную, в том числе и по используемой памяти, программу (укажите ис-
пользуемую версию языка программирования, например, Borland Pascal 7.0), которая должна
закодировать строку по указанному алгоритму.
На вход программе подается строка, состоящая из не более чем 250 символов латинского ал-
фавита, пробелов, знаков препинания, разного рода скобок, кавычек и других символов. Стро-
ка заканчивается символом «#». Других символов «#» в строке нет.
Программа должна вывести закодированную по указанному алгоритму строку.
Пример входных данных:
Day, mice. «Year» - a mistake#
Пример выходных данных:
Gelb, qmgi. "Ciev" - b tpzahrl#
ВАРИАНТ 16
Часть 1
Ответами к заданиям 1—23 являются число, последовательность букв или цифр, кото-
рые следует записать в БЛАНК ОТВЕТОВ № 1 справа от номера соответствующего зада-
ния, начиная с первой клеточки, без пробелов, запятых и других дополнительных симво-
лов. Каждый символ пишите в отдельной клеточке в соответствии с приведёнными в бланке
образцами.
1 Даны 4 целых числа, записанных различных системах счисления: 9F16, 101101102, А816,
Dlie. Сколько среди них чисел, значение которых лежит между 236g и В716?
Ответ:.
Логическая функция F задаётся выражением w Д^х Д((~ч/) -> -г).
На рисунке приведён фрагмент таблицы истинности функции F, содержащий все наборы
аргументов, при которых функция F истинна.
Определите, какому столбцу таблицы истинности функции F соответствует каждая из пере-
менных х, у, z, w.
Перем. 1 Перем. 2 Перем. 3 Перем. 3 Функция
??? ??? ??? ??? F
0 0 1 0 1
1 0 1 0 1
1 1 1 0 1
В ответе напишите буквы х, у, z, w в том порядке, в котором идут соответствующие им столб-
цы (сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая
второму столбцу; затем — буква, соответствующая третьему столбцу; затем — буква, соответ-
ствующая четвёртому столбцу). Буквы в ответе пишите подряд, никаких разделителей между
буквами ставить не нужно.
Пример. Пусть задано выражение х -» у, зависящее от двух переменных х и у, и таблица
истинности:
Перем.1 Перем. 2 Функция
??? ??? F
0 0 1
0 1 0
1 0 1
1 1 1
Тогда первому столбцу соответствует переменная у, а второму столбцу — переменная х.
В ответе нужно написать: ух.
Ответ:
3
Между четырьмя местными аэропортами: ЛЕСНОЙ, КРАЙ, ЗИМА и ПОЛЯНА ежедневно
выполняются авиарейсы. Приведён фрагмент расписания перелётов между ними.
Аэропорт вылета Аэропорт прилёта Время вылета Время прилёта
ЛЕСНОЙ ПОЛЯНА 10:15 14:30
ЗИМА КРАЙ 10:20 12:30
ЗИМА ЛЕСНОЙ 14:14 16:30
ПОЛЯНА ЗИМА 15:40 17:35
ЛЕСНОЙ ЗИМА 10:05 12:20
КРАЙ ЗИМА 11:40 13:55
ЛЕСНОЙ КРАЙ 9:40 11:50
КРАЙ ПОЛЯНА 12:20 14:10
ПОЛЯНА КРАЙ 13:15 15:40
ЗИМА ПОЛЯНА 12:30 14:25
Путешественник оказался в аэропорту ЛЕСНОЙ в полночь (0:00). Определите самое раннее
время, когда он может попасть в аэропорт ПОЛЯНА.
Ответ:.
4
Дан фрагмент базы данных, содержащий информацию о родственных отношениях. Опреде-
лите, сколько прямых потомков (т. е. детей и внуков) Калпен Л.В. упомянуто в таблице.
Таблица 1
ID Фамилия И.О. Пол
1518 Гираб В.А. М
1885 Жуйко А. И. м
2946 Калпен Л.В. м
3472 Арно В.А. /IV
4705 Иваненко И.Л. м
5624 Ирита Е.О. •щ* /IV
6109 Кирта У.Т. «ш» /IV
7296 Олинг К. Л. •щ* /IV
8434 Кименко З.Т. «ш» /IV
9657 Вирк Я.М. /IV
Ответ:
Таблица 2
1В_Родителя ГО_Ребёнка
1885 3472
6109 3472
9657 1885
4705 1885
2946 4705
5624 4705
8434 2946
1518 2946
2946 7296
5624 7296
...
5 Для кодирования некоторой последовательности, состоящей из букв А, Б, В, Г, Д, Е, реши-
ли использовать неравномерный двоичный код, удовлетворяющий условию Фано. Для буквы
А использовали кодовое слово 1; для буквы Б — кодовое слово 00. Какова наименьшая возмож-
ная сумма длин всех шести кодовых слов?
Примечание. Условие Фано означает, что никакое кодовое слово не является началом дру-
гого кодового слова. Это обеспечивает возможность однозначной расшифровки закодирован-
ных сообщений.
Ответ:.
6
Автомат получает на вход трёхзначное число. По этому числу строится новое число по сле-
дующим правилам.
1. Складываются отдельно первая и вторая цифры, а также — вторая и третья цифры.
2. Полученные два числа записываются друг за другом в порядке невозрастания без раз-
делителей.
Пример. Исходное число: 179. Суммы: 1 + 7 = 8; 7 + 9 = 16. Результат: 168.
Укажите наибольшее число, при обработке которого автомат выдаёт результат 146.
Ответ:___________________________________________________________________________________
7
Дан фрагмент электронной таблицы:
А В с D
1 3 5
2 -(А1+С1)/4 -С1-1 -А2/2 =В1/2
Какое число должно быть записано в ячейке В1, чтобы построенная
после выполнения вычислений диаграмма по значениям диапазона
ячеек A2:D2 соответствовала рисунку?
Ответ:
Определите, что будет напечатано в результате выполнения следующего фрагмента про-
граммы:
Бейсик Паскаль
DIM k, s AS INTEGER к = 3 s = 512 WHILE s > 1 s = s\2 к = к + 4 WEND PRINT к var k, s : integer; begin к := 3; s := 512; while s > 1 do begin s := s div 2; к := к + 4 end; write(k); end.
Си Алгоритмический язык
{ int к, s; к = 3; s = 512; while (s > 1) { s = s / 2 ; к = к + 4; } printf ("%d", k); } нач цел k, s k := 3 s := 512 нц пока s > 1 s := div(s,2) k := k + 4 кц вывод k KOH
Ответ:,
9
Производится двухканальная (стерео) звукозапись с частотой дискретизации 16 кГц и ко-
личеством уровней квантования 65536. Запись длится 4 минуты, её результаты записываются
в файл, сжатие данных не производится. Укажите размер полученного файла (в Мбайт) с точ-
ностью 5 Мбайт. В ответе запишите только целое число, единицу измерения писать не нужно.
Ответ:.
Ю Для того, чтобы пассажиры трамвая могли издалека видеть, трамвай какого маршрута при-
ближается, в трамвайном парке применяют цветовое кодирование трамваев. Для этого на лобо-
вом стекле используют светофильтры различных цветов — один слева и один справа. Известно,
что светофильтры используются 5-ти различных цветов и что они не могут быть одинаковые на
одном трамвае. Сколько различных цветовых кодов можно использовать?
Ответ:.
11
Определите, сколько звёздочек будет напечатано в результате вызова F(3) приведённой под-
программы:
Бейсик Паскаль
SUB F(n) IF n > 0 THEN F(n - 2) F(n - 1) F(n - 1) END IF PRINT END SUB procedure F(n: integer); begin if n > 0 then begin F(n - 2) ; F(n - 1) ; F(n - 1) end; write('*'); end;
Си Алгоритмический язык
void F(int n) { if (n > 0) { F(n - 2) ; F(n - 1) ; F(n - 1) ; } printf ("*"); } алг F(цел n) нач если n > 0 то F(n - 2) F(n - 1) F(n - 1) все вывод '*' КОН
Ответ:,
12 В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая
часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети.
Обычно маска записывается по тем же правилам, что и 1Р-адрес, — в виде четырёх байтов, при-
чём каждый байт записывается в виде десятичного числа. При этом в маске сначала (в старших
разрядах) стоят единицы, а затем с некоторого разряда — нули.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному
IP-адресу узла и маске.
Например, если IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0, то адрес
сети равен 231.32.240.0.
Для узла с IP-адресом 243.212.83.98 адрес сети равен 243.212.80.0. Чему равно наименьшее
возможное количество единиц в разрядах маски?
Ответ:
13 При регистрации в компьютерной системе каждому пользователю выдаётся пароль, состоя-
щий из 13 символов и содержащий только символы из 15-символьного набора: А, В, С, D, Е, F,
G, Н, К, L, М, N, О, Р, Q. В базе данных для хранения сведений о каждом пользователе отведено
одинаковое и минимально возможное целое число байт. При этом используют посимвольное
кодирование паролей, все символы кодируют одинаковым и минимально возможным количе-
ством бит. Кроме собственно пароля, для каждого пользователя в системе хранятся дополни-
тельные сведения, для чего отведено 8 байт на одного пользователя.
Определите объём памяти (в байтах), необходимый для хранения сведений о 20 пользовате-
лях. В ответе запишите только целое число — количество байт.
Ответ:.
14
15
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может
выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например,
выполнение команды
заменить (222, 34)
преобразует строку 77222277 в строку 7734277.
Если в строке нет вхождений цепочки и, то выполнение команды заменить (v, w) не меняет
эту строку.
Б) нашлось (v).
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она
встречается, то команда возвращает логическое значение «истина», в противном случае воз-
вращает значение «ложь». Строка исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда!
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда! (если условие истинно) или команда2 (если условие ложно).
Какая строка получится в результате применения приведённой ниже программы к строке,
состоящей из 65 идущих подряд цифр 4? В ответе запишите полученную строку.
НАЧАЛО
ПОКА нашлось (444) ИЛИ нашлось (555)
ЕСЛИ нашлось (444)
ТО заменить (444, 5)
ИНАЧЕ заменить (555, 4)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Ответ:.
На рисунке — схема дорог, связывающих города А, Б,
В, Г, Д, Е, Ж, 3, И, К. По каждой дороге можно двигаться
только в одном направлении, указанном стрелкой.
Сколько существует различных путей из города А в го-
род К?
Ответ:.
16
17
18
19
Значение арифметического выражения: 2540 — 5®°+ 24 — записали в системе счисления
с основанием 5. Сколько цифр «4» содержится в этой записи?
Ответ:.
В языке запросов к поисковому серверу для обозначения логической операции «ИЛИ» ис-
пользуется символ «|», а для логической операции «И» — «&». В таблице приведено количе-
ство страниц, которое находит поисковая система по каждому запросу.
Запрос Количество найденных страниц (в тысячах)
Корвет | Линкор | Фрегат 30
Фрегат 17
Линкор 12
Корвет 8
Линкор & Фрегат 4
Корвет & Линкор 3
Корвет & Линкор & Фрегат 2
Какое количество страниц (в тысячах) будет найдено этой поисковой системой по запросу
Корвет & Фрегат ?
Ответ:;.
Обозначим через т&п поразрядную конъюнкцию неотрицательных целых чисел тип.
Так, например, 14&5 = 11Ю2 & 01012 = 01002 = 4.
Для какого наименьшего неотрицательного целого числа А формула
х&А = 0 -> ((х&23 = О V*&18 = 0) -> (х&А = 0 /\х&23 = 0))
тождественно истинна (то есть принимает значение 1 при любом неотрицательном целом зна-
чении переменной х)?
Ответ:•
В программе используется целочисленный массив А с индексами от 0 до 9. Значения эле-
ментов массива равны 6; 5; 4;' 7; 10; 6; 9; 11; 7; 8 соответственно, т. е. А[0] = 6; А[ 1 ] = 5 и т. д.
Определите значение переменной k после выполнения следующего фрагмента программы,
записанной ниже на разных языках программирования.
Бейсик Паскаль
к = 0 m = 0 FOR i = 0 ТО 9 IF A(i> > m THEN к = к + 1 m = A (i) ENDIF NEXT i к := 0; m : = 0; for i := 0 to 9 do if A[i] > m then begin к := к + 1; m := A[i] end;
Си Алгоритмический язык
к = 0; m = 0; for (i=0 ; i<=9 ; i++) if(A[i] > m) { к = к + 1; m = A [ i ] ; } k := 0 m : = 0 нц для i от 0 до 9 если A[i] > m TO k := k + 1 m : = A [ i ] все кц
Ответ:
20
21~|
Ниже на четырёх языках записан алгоритм. Получив на вход число х, этот алгоритм пе-
чатает два числа L и М. Укажите наименьшее из таких чисел х, при вводе которых алгоритм
печатает сначала 3, а потом 5.
Бейсик Паскаль
DIM X, L, М AS INTEGER INPUT X L = 0 М = 9 WHILE X > 0 L = L + 1 IF M > (X MOD 10) THEN M = X MOD 10 ENDIF X = X\10 WEND PRINT L PRINT M var x, L, M: integer; begin readln(x) ; L := 0; M := 9; while x > 0 do begin L := L + 1; if M > (x mod 10) then M := x mod 10; x := x div 10 end; writein (L); write(M) end.
Си Алгоритмический язык
#include<stdio.h> void main() { int x, L, M; scanf("%d", &x); L = 0; M = 9; while (x > 0){ L = L + 1; if (M > x%10) M = x%10; x = x/10; ) printf("%d\n%d", L, M); } алг нач цел х, L, М ВВОД X L := 0 М := 9 нц пока х > 0 L := L + 1 если М > mod(х,10)' ТО М := mod(х,10) все х := div(х,10) кц вывод L, нс, М кон
Ответ:__________________________________________________________________________________
Определите, при каком наименьшем значении Ь в результате выполнения следующего ал-
горитма будет напечатано число 15 (для Вашего удобства алгоритм представлен на четырёх
языках):
Бейсик Паскаль
DIM А, В AS INTEGER var a,b : integer;
INPUT В function F(x : integer) : integer;
А = 0 begin
WHILE F(A) < В if x = 0 then
А = А + 1 F := 0
WEND else
PRINT А F := F(x-l) + 8
end;
FUNCTION F (х) BEGIN
IF х = 0 readln(b);
F = 0 a := 0;
ELSE while F(a) < b do
F = F(x-l) + 8 begin
END IF a : = a + 1
END FUNCTION end; write(a) END.
Си Алгоритмический язык
int F(int х) ( if(x == 0) return 0; else return F(x-l) + 8; } void main() ( int a, b; scanf("%d",&b); a = 0; while (F(a) < b) { a = a + 1; } printf("%d", a); } алг нач цел а, b ввод Ь а := 0 нц пока F(а) < b а : = а + 1 кц вывод а кон алг цел F(цел х) нач если х > 0 то знач :- 0 иначе знач := F(x-l) + 8 КЦ кон
Ответ:__________________________________________________________________________________
22 У исполнителя Прибавлятель две команды, которым присвоены номера:
1. прибавь 1,
2. прибавь 9.
Первая из них увеличивает число на экране на 1, вторая увеличивает его на 9.
Программа для Прибавлятеля — это последовательность команд.
Сколько есть программ, которые число 2 преобразуют в число 25?
Ответ:_________________________________________________________________________
23 Сколько существует различных наборов значений логических переменных хр х2, ... xr х8,
которые удовлетворяют всем перечисленным ниже условиям?
(*1->X2) V(*!->*3)= 1
(Х2^Х3) V(^2-^^4)= 1
(х3 —> х4) V(x3-^x5) = 1
(х4 —> х.) \/(х4->х6) = 1
(х5-^х6) V(x.^x7) = 1
(xe->x7) V(x6->x8)= 1
В ответе не нужно перечислять все различные наборы значений хр х2, ... хр xg, при которых
выполнена данная система равенств. В качестве ответа вам нужно указать количество таких
наборов.
Ответ:.
Не забудьте перенести все ответы в бланк ответов № 1 в соответствии с инструкцией
по выполнению работы.
Часть 2
Для записи ответов на задания этой части (24—27) используйте БЛАНК ОТВЕТОВ № 2.
Запишите сначала номер задания (24, 25 и т. д.), а затем полное решение. Ответы записы-
вайте чётко и разборчиво.
24
Требовалось написать программу, которая вводит с клавиатуры последовательность из
п целых чисел (га = 4), и выводит на экран минимальное положительное число этой последова-
тельности. Если в последовательности нет положительных чисел, программа должна вывести
на экран «NO». Известно, что вводимые числа не превышают по модулю 1000. Программист
торопился и написал программу неправильно.
Паскаль Бейсик
const п = 4; var i, a, min: integer; begin min := 2000; for i := 1 to n do begin read(a); if a > 0 then if a < min then min := a end; if min > 0 then writein(min) ' else writein (0) end. CONST N = 4 DIM I, A, MIN AS INTEGER MIN := 2000 FOR I = 1 TO N INPUT A IF A > 0 THEN IF A < MIN THEN MIN = A END IF END IF NEXT I IF MIN > 0 THEN PRINT MIN ELSE PRINT 0 END IF END
Си Алгоритмический язык
#include<stdio.h> #define n 4 int main() { int i, a, min; min = 2000; for (i = 0 ; i < n ; i++) { scanf("%d", &a); if(a > 0) if(a < min) min = a; } if(min > 0) printf("%d", min); else print (0); } алг нач цел п = 4 цел а, 1, min min := 2000 нц для i от 1 до п ввод а если а > 0 ТО если а < min ТО min := а все все кц если min > 0 то вывод min иначе вывод 0 все кон
Выполните следующие действия:
1. Напишите, что выведет программа при вводе чисел -1 -2 -3 -4.
2. Приведите пример такой входной последовательности, при которой программа работает
верно.
3. Укажите все ошибки в программе и исправьте их. Для этого для каждой ошибки:
выпишите строку, которая написана неправильно и приведите правильный вариант строки.
25 Дан целочисленный массив из 40 элементов. Элементы массива могут принимать значения
от -10000 до 10000. Опишите на русском языке или на одном из языков программирования
алгоритм, который находит и выводит количество пар соседних элементов, произведение кото-
рых чётно и положительно.
Исходные данные объявлены так, как показано ниже. Запрещается использовать перемен-
ные, не описанные ниже, но разрешается не использовать часть из них.
Паскаль Бейсик
const N = -40; var a: array [1..N] of integer; i, k, p: integer; begin for i := 1 to N do readln(a[i]); end. N = 40 DIMA(N) AS INTEGER DIM I, К, P AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I END
СИ Алгоритмический язык
#include <stdio.h> # define N 40 void main(void) (int a[N]; int i, k, p; for (i=0; i<N; i++) scanf ("%d", &a[i]); } алг нач цел N = 40 целтаб .а [ 1: N ] цел i, к, р нц для i от 1 до N ввод а[i] КЦ кон
Русский (естественный) язык
Объявляем массив А из 40 элементов. Объявляем целочисленные переменные I, К, Р. В цикле от 1 до 40 вводим элементы массива А с 1-го по 40-й.
В качестве ответа вам необходимо привести фрагмент программы (или описание алгоритма
на естественном языке), который должен находиться на месте многоточия. Вы можете запи-
сать решение также на другом языке программирования (укажите название и используемую
версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом
случае вы должны использовать те же самые исходные данные и переменные, какие были пред-
ложены в условии (например, в образце, записанном на естественном языке).
26 Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней.
Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу
один или три камня или увеличить количество камней в куче в три раза. Например, имея кучу
из 15 камней, за один ход можно получить кучу из 16, 18 или 45 камней. У каждого игрока,
чтобы делать ходы, есть неограниченное количество камней.
Игра завершается в тот момент, когда количество камней в куче становится не менее 25.
Победителем считается игрок, сделавший последний ход, т. е. первым получивший кучу, в ко-
торой будет 25 или больше камней.
В начальный момент в куче было S камней, 1 < S < 24.
Говорят, что игрок имеет выигрышную стратегию, если он может выиграть при любых хо-
дах противника. Описать стратегию игрока — значит описать, какой ход он должен сделать
в любой ситуации, которая ему может встретиться при различной игре противника.
Выполните следующие задания. Во всех случаях обосновывайте свой ответ.
1. а. Укажите все такие значения числа S, при которых Петя может выиграть в один ход.
Обоснуйте, что найдены все нужные значения S, и укажите выигрывающий ход для каждого
указанного значения S.
б. Укажите такое значение S, при котором Петя не может выиграть за один ход, но при лю-
бом ходе Пети Ваня может выиграть своим первым ходом. Опишите выигрышную стратегию
Вани.
2. Укажите два значения S, при которых у Пети есть выигрышная стратегия, причём
(а) Петя не может выиграть за один ход и (б) Петя может выиграть своим вторым ходом неза-
висимо от того, как будет ходить Ваня. Для каждого указанного значения S опишите выигрыш-
ную стратегию Пети.
3. Укажите такое значение S, при котором:
— у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым хо-
дом при любой игре Пети, и
— у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
Для указанного значения S опишите выигрышную стратегию Вани. Постройте дерево всех
партий, возможных при этой выигрышной стратегии Вани (в виде рисунка или таблицы). На
ребрах дерева указывайте, кто делает ход, в узлах — количество камней в куче.
27 После единых выпускных экзаменов по информатике в район пришла информация о том,
какой ученик какой школы сколько баллов набрал.
Районный методист решила выяснить номер школы, ученики которой набрали наиболь-
ший средний балл, с точностью до целых.
Программа должна вывести на экран номер такой школы и ее средний балл.
Если наибольший средний балл набрало больше одной школы — вывести количество таких
школ.
Напишите эффективную, в том числе и по используемой памяти, программу (укажите ис-
пользуемую версию языка программирования, например, Borland Pascal 7.0), которая должна
вывести на экран требуемую информацию. Известно, что информатику сдавало больше 5-ти
учеников района. Также известно, что в районе школы с некоторыми номерами не существуют.
На вход программе сначала подаётся число учеников, сдававших экзамен. В каждой из сле-
дующих N строк находится информация об учениках в формате:
<Фамилия> <Имя> <Номер школы> <Количество баллов> ,
где <Фамилия> — строка, состоящая не более, чем из 30 символов без пробелов, <Имя> —
строка, состоящая не более, чем из 20 символов без пробелов, <Номер школы> — целое число
в диапазоне от 1 до 99, <Количество баллов> — целое число диапазоне от 1 до 100. Эти данные
записаны через пробел, причем ровно один между каждой парой (то есть, всего по три пробела
в каждой строке).
Пример входной строки:
Иванов Иван 50 87
Пример выходных данных:
50 74
Другой вариант выходных данных:
7
ВАРИАНТ 17
Часть 1
Ответами к заданиям 1—23 являются число, последовательность букв или цифр, кото-
рые следует записать в БЛАНК ОТВЕТОВ № 1 справа от номера соответствующего зада-
ния, начиная с первой клеточки, без пробелов, запятых и других дополнительных симво-
лов. Каждый символ пишите в отдельной клеточке в соответствии с приведёнными в бланке
образцами.
1
Число X в шестнадцатеричной системе счисления оканчивается на 816, а в восьмеричной си-
стеме счисления — трёхзначное и начинается на 35g.Укажите это число в десятичной системе
счисления.
Ответ:.
2
Логическая функция F задаётся выражением (х Д-у) V((^х) А2)-
На рисунке приведён фрагмент таблицы истинности функции F, содержащий все наборы
аргументов, при которых функция F истинна.
Определите, какому столбцу таблицы истинности функции F соответствует каждая из пере-
менных х, у, 2.
Перем. 1 Перем. 2 Перем. 3 Функция
??? ??? ??? F
0 1 0 1
0 1 1 1
1 0 0 1
1 1 0 1
В ответе напишите буквы х, у, 2 в том порядке, в котором идут соответствующие им столб-
цы (сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая
второму столбцу; затем — буква, соответствующая третьему столбцу). Букве в ответе пишите
подряд, никаких разделителей между буквами ставить не нужно.
Пример. Пусть задано выражение х —> у, зависящее от двух переменных х и у, и таблица
истинности:
Перем. 1 Перем. 2 Функция
??? ??? F
0 0 1
0 1 0
1 0 1
1 1 1
Тогда первому столбцу соответствует переменная у, а второму столбцу соответствует пере
менная х. В ответе нужно написать: ух.
Ответ:
3
Между населёнными пунктами А, В, С, D, Е, F построены дороги, протяжённость которых
приведена в таблице. (Отсутствие числа в таблице означает, что прямой дороги между пункта-
ми нет.)
Определите длину кратчайшего пути между пунктами А и F (при условии, что передвигать-
ся можно только по построенным дорогам).
Ответ: •
4 Для групповых операций с файлами используются маски имён файлов. Маска представ-
ляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов,
в которых также могут встречаться следующие символы:
Символ «?» (вопросительный знак) означает ровно один произвольный символ.
Символ «*» (звёздочка) означает любую последовательность символов произвольной дли-
ны, в том числе «*» может задавать и пустую последовательность.
Определите, какие из указанных имён файлов удовлетворяют маске:
*1а?*.*?о*
1)Ыam.docx
2) Plan.ozi
3)lat.to
4)blabla.doc
В ответе перечислите номера файлов в порядке возрастания без пробелов и знаков препи-
нания.
Ответ:.
5 Для кодирования некоторой последовательности, состоящей из букв А, В, С и D, использу-
ется неравномерный двоичный код, позволяющий однозначно декодировать полученную дво-
ичную последовательность. Вот этот код: А-1101, В-100, С-000, D-111.
Можно ли сократить для одной или нескольких букв длину кодового слова, удалив в нём
один или несколько последних символов, чтобы код по-прежнему можно было декодировать
однозначно? Если такое можно сделать несколькими способами, укажите тот, для которого об-
щая длина кода будет минимальной.
Запишите ответ в виде: буква, кодовое слово. Если таких букв несколько, то далее через
запятую перечислите буквы и их коды. Буквы перечислять в алфавитном порядке. Например,
если бы ответ был «Для буквы F новый код будет 110, а для буквы G новый код будет 101», от-
вет нужно записать как: F110,G101. Если невозможно ничего сократить, запишите в ответе
просто цифру 0.
Ответ:.
У исполнителя Утроитель две команды, которым присвоены номера:
1. умножь на 3,
2. прибавь 1.
Первая из них утраивает число на экране, вторая — увеличивает его на 1.
Запишите порядок команд в программе преобразования числа 5 в число 72, содержащей
не более 5 команд, указывая лишь номера команд. (Например, 21211 — это программа
прибавь 1
умножь на 3
прибавь 1
умножь на 3
умножь на 3,
которая преобразует число 1 в 63.)
(Если таких программ более одной, то запишите любую из них.)
Ответ:.
Дан фрагмент электронной таблицы:
А В С D
1 2 6
2 =С1/2 -(A1+D/3 =(В1+С2)/4 -С1-3
Какое число должно быть записано в ячейке В1, чтобы построен-
ная после выполнения вычислений диаграмма по значениям диапа-
зона ячеек A2:D2 соответствовала рисунку?
Ответ:________________________________________________________
Определите, что будет напечатано в результате выполнения следующего фрагмента про-
граммы:
Бейсик Паскаль
DIM k, s AS INTEGER к = 1 s = 3 WHILE s < 22 s = s + 2 к = к * 2 WEND PRINT к var k, s : integer; begin к := 1; s : = 3 ; while s < 22 do begin s : = s + 2; к := к * 2 end; write (к); end.
Си Алгоритмический язык
{ int к, s; к = 1; s = 3 ; while (s < 22) { s = s + 2 ; к = к * 2; ) printf("%d", k); } нач цел k, s k := 1 s : = 3 нц пока s < 22 s := s + 2 k := k * 2 КЦ вывод k KOH
Ответ:.
9 Музыкальный фрагмент был записан в формате стерео (двухканальная запись), оцифро-
ван и сохранён в виде файла без использования сжатия данных. Размер полученного файла —
16 Мбайт. Затем тот же музыкальный фрагмент был оцифрован повторно в формате моно и оциф-
рован с разрешением в 1,5 раза выше и частотой дискретизации в 2 раза меньше, чем в первый
раз. Сжатие данных не производилось. Укажите размер файла в Мбайт, полученного при повтор-
ной записи. В ответе запишите только целое число, единицу измерения писать не нужно.
Ответ:•
Ю Для записи результатов соревнований используется таблица, в которой для каждой из
15-ти команд по каждому из 20-ти видов состязаний записано число от 1 до 7 (количество бал-
лов, которое набрала команда в соответствующем состязании) или прочерк (если команда не
участвовала в этом состязании). Какое количество информации (бит) содержит таблица?
Ответ:.
11
Определите, сколько звёздочек будет напечатано в результате вызова F(6) приведённой под-
программы:
Бейсик Паскаль
SUB F(n) PRINT IF n > 2 THEN F(n - 2) F(n - 1) END IF END SUB z procedure F(n: integer); begin write ('*'); if n > 2 then begin F(n - 2) ; F(n - 1) end end;
Си Алгоритмический язык
void F(int n) { printf("*") ; if (n > 2) { F(n - 2); F(n - 1) ; } } алг F(цел n) нач вывод '*’ если п > 2 то F (п - 2) F(n - 1) все кон
Ответ:.
12 В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая
часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети.
Обычно маска записывается по тем же правилам, что и 1Р-адрес, — в виде четырёх байтов, при-
чём каждый байт записывается в виде десятичного числа. При этом в маске сначала (в старших
разрядах) стоят единицы, а затем с некоторого разряда — нули.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному
IP-адресу узла и маске.
Например, если IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0, то адрес
сети равен 231.32.240.0.
Для узла с IP-адресом 237.14.199.102 адрес сети равен 237.14.192.0. Чему равно наиболь-
шее возможное значение третьего слева байта маски? Ответ запишите в виде десятичного числа.
Ответ:
13 В некоторой стране автомобильный номер состоит из 9 символов: сначала 3 буквы, затем 4 циф-
ры, затем еще 2 буквы. При этом буквы могут быть выбраны только из 25 строчных букв местного
алфавита. Среди цифр не используются цифры 0 и 8. Автоматизированная система хранит номера
автомобилей следующим образом. Используется посимвольное кодирование и в памяти системы
для кодирования каждого символа используется минимально возможное и одинаково целое коли-
чество бит. А для хранения всего пароля используется минимально возможное целое количество
байт. Какое количество информации (в байтах) требуется для хранения номеров 120 автомобилей?
Ответ:.
14 Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может
выполнять две команды, в обеих командах v ии> обозначают цепочки цифр.
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например,
выполнение команды
заменить(222, 34)
преобразует строку 77222277 в строку 7734277.
Если в строке нет вхождений цепочки V, то выполнение команды заменить (v, w) не меняет
эту строку.
Б) нашлось (v).
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она
встречается, то команда возвращает логическое значение «истина», в противном случае воз-
вращает значение «ложь». Строка исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда!
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда! (если условие истинно) или команда2 (если условие ложно).
Какая строка получится в результате применения приведённой ниже программы к строке,
состоящей из 50 идущих подряд цифр 2? В ответе запишите полученную строку.
НАЧАЛО
ПОКА нашлось (222) ИЛИ нашлось (333)
ЕСЛИ нашлось (222)
ТО заменить (222, 3)
ИНАЧЕ заменить (333, 2)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Ответ:_______________________________________________________________________.•
На рисунке — схема дорог, связывающих города
А, Б, В, Г,Д, Е,Ж, 3,И, К.
По каждой дороге можно двигаться только в одном
направлении, указанном стрелкой.
Сколько существует различных путей из города
А в город К?
Ответ:.
16
17
Запись десятичного числа в системах счисления с основаниями 6 и 15 в обоих случаях име-
ет последней цифрой 0. Какое минимальное натуральное десятичное число удовлетворяет это-
му требованию?
Ответ::•
В языке запросов к поисковому серверу для обозначения логической операции «ИЛИ» ис-
пользуется символ «|», а для логической операции «И» — «&». В таблице приведено количе-
ство страниц, которое находит поисковая система по каждому запросу.
Запрос Количество найденных страниц (в тысячах)
Мука | Дрожжи | Вода 45
Мука 26
Дрожжи 24
Вода 32
Мука & Дрожжи 12
Мука & Вода 15
Дрожжи & Вода 14
Какое количество страниц (в тысячах) будет найдено этой поисковой системой по запросу
Мука & Дрожжи & Вода ?
Ответ:~.
18 Какие из приведённых названий животных удовлетворяют логическому условию
(первая буква гласная —> вторая буква гласная) Д
Д (последняя буква согласная —> предпоследняя буква согласная)
1) СТРАУС
2) АНТИЛОПА
3) ЖИРАФ
4) ДОДО
5) ТИГР
В ответе перечислите номера названий животных в порядке возрастания без пробелов и
знаков препинания.
Ответ:.
19~|
В программе используется целочисленный массив А с индексами от 0 до 9. Значения эле-
ментов массива равны 6; 5; 4; 7; 10; 6; 9; 11; 7; 8 соответственно, т. е. А[0] = 6; А[1] = 5 и т. д.
Определите значение переменной k после выполнения следующего фрагмента-программы,
записанной ниже на разных языках программирования.
Бейсик Паскаль
к = 0 FOR i = 0 ТО 9 IF A(i) MOD 2 > 0 THEN к = i ENDIF NEXT i к := 0; for i := 0 to 9 do if A[i] mod 2 > 0 then к := i;
Си Алгоритмический язык
к = 0; k := 0
for (i = 0 ; i <= 9 ; i++) if (A[i]%2 > 0) к = i; нц для i от 0 до 9 если mod(А[i],2) > 0 ТО k := i все кц
Ответ:__________________________________________________________________________________
20
Ниже на четырёх языках записан алгоритм.
Получив на вход число х, этот алгоритм печатает два числа L и М.
Укажите наибольшее число х, при вводе которого алгоритм печатает сначала 3, а потом 7.
Бейсик Паскаль
DIM X, L, М AS INTEGER INPUT X L = 0 M = 0 WHILE X’ > 0 M = M + 1 IF X MOD 2=0 THEN L = L + 1 ENDIF X = X\2 WEND PRINT L PRINT M var x, L, M: integer; begin readln (x); L := 0; M := 0; while x > 0 do begin M := M + 1; if x mod 2=0 then L := L + 1; x := x div 2 end; writein (L); write(M) end.
Си Алгоритмический язык
#include<stdio.h> void main() { int x, L, M; scanf("%d", &x); L = 0; M = 0; while (x > 0){ M = M + 1; if(x%2 == 0) L = L + 1; x •= x/2; } printf("%d\n%d", L, M); } алг нач цел х, L, М ВВОД X L := 0 М := 0 нц пока х > 0 М := М + 1 если mod(x,2) = 0 ТО L := L + 1 все х := div(x,2) кц вывод L, нс, М кон
21 Ниже на четырёх языках представлен алгоритм.
Определите, при скольких значениях b на экран будет выведено такое же число, как и при
b = 300 (включая b = 300).
Бейсик Паскаль
DIM А, В AS INTEGER INPUT В . А = 0 WHILE F(А) < В А = А + 1 WEND PRINT А FUNCTION F (х) IF х = 0 F = 1 ELSE F = 2 * F(x-l) END IF END FUNCTION var a,b : integer; function F(x : integer) : integer; begin if x = 0 then F := 1 else F := 2 * F(x-l) end; BEGIN readln(b); a : = 0 ; while F(a) < b do begin a : = a + 1 end; write (a) END.
Си Алгоритмический язык
int F(int x) { if (x == 0) return 1; else return 2 * F(x-l); } void main() { int a, b; scanf("%d",&b); a = 0; while (F(a) < b) { a = a + 1; } printf("%d", a); } алг нач цел а, Ь ввод Ь а : = 0 нц пока F(а) < b а :.= а + 1 кц вывод а кон алг цел F(цел х) нач если х = 0 то знач := 1 иначе знач := 2 * F(x-l) КЦ кон
Ответ:,
22 у исполнителя Прибавлятель три команды, которым присвоены номера:
1. прибавь 1,
2. прибавь 2,
3. прибавь 4.
Первая из них увеличивает число на экране на 1, вторая — на 2, третья — на 4.
Программа для Прибавлятеля — это последовательность команд.
Сколько есть программ, которые число 1 преобразуют в число 11?
Ответ:
|~~23
Сколько существует различных наборов значений логических переменных хр х2, ... х7, х8,
которые удовлетворяют всем перечисленным ниже условиям?
(xtAx2) V(x2A*3) = O
(х2Л*3) V(x3Ax4) = 0
(х3 Лх4) V(x4Ax5) = 0
(*4Л*5) V(*5A*6) = 0
(х5Л*6) V(x6A*7) = O
(х6Лх7) V(x7Ax8) = 0
В ответе не нужно перечислять все различные наборы значений хр х2,... х7, х8, при которых
выполнена данная система равенств. В качестве ответа вам нужно указать количество таких
наборов.
Ответ: .
Не забудьте перенести все ответы в бланк ответов № 1 в соответствии с инструкцией
по выполнению работы.
Часть 2
Для записи ответов на задания этой части (24—27) используйте БЛАНК ОТВЕТОВ № 2.
Запишите сначала номер задания (24, 25 и т. д.), а затем полное решение. Ответы записы-
вайте чётко и разборчиво.
24
Требовалось написать программу, при выполнении которой
с клавиатуры считываются координаты точки на плоскости (х, у —
действительные числа) и определяется принадлежность этой точки
заданной закрашенной области (включая границы). Программист
торопился и написал программу неправильно.
Паскаль Бейсик
var х, у: real; begin readln(х,у); if у >= abs(x) - 1 then if у <= 0 then if у <= -x*x then write ('принадлежит') else write('не принадлежит') end. INPUT X, у IF у >= abs(x)-l THEN IF у <- 0 THEN IF у <= -x‘x THEN PRINT "принадлежит" ELSE PRINT "не принадлежит" ENDIF ENDIF ENDIF END
Си Алгоритмический язык
void main(void) { float x, y; scanf("%f%f",&x,&y) ; if (y >= fabs(x) - 1) if (y <= 0) if (y <= -x*x) printf("принадлежит"); else printf("не принадлежит"); } алг нач вещ х, у ВВОД X, у если у >= abs(х) - 1 то если у <= 0 то если у <= -х*х то вывод ’принадлежит’ иначе вывод 'не принадлежит’ все все все кон
Последовательно выполните следующее.
1. Перерисуйте и заполните таблицу, которая показывает, как
работает программа при аргументах, принадлежащих различным
областям (А, В, С, D, Е, F, G, Н и I).
Точки, лежащие на границах областей, отдельно не рассматри-
вать.
Область Условие 1 (y>=abs(x)-l) Условие 2 (у<=0) Условие 3 (у<=-х*х) Программа выведет Область обрабатывается верно
А
В
С
D
Е
F
G
Н
1
В столбцах условий укажите «да», если условие выполнится, «нет» если условие не вы-
полнится, «—» (прочерк), если условие не будет проверяться, «не изв.», если программа
ведет себя по-разному для разных значений, принадлежащих данной области. В столбце
«Программа выведет» укажите, что программа выведет на экран. Если программа ничего
не выводит, напишите «—» (прочерк). Если для разных значений, принадлежащих обла-
сти, будут выведены разные тексты, напишите «не изв». В последнем столбце укажите «да»
или «нет».
2. Укажите, как нужно доработать программу, чтобы не было случаев её неправильной ра-
боты. (Это можно сделать несколькими способами, достаточно указать любой способ доработки
исходной программы.)
25
Дан целочисленный массив из 40 элементов. Элементы массива могут принимать значения
от -10000 до 10000. Опишите на русском языке или на одном из языков программирования
алгоритм, который находит и выводит количество трёхзначных чисел среди них. Если таких
элементов нет, вывести на экран «NO».
Исходные данные объявлены так, как показано ниже. Запрещается использовать перемен-
ные, не описанные ниже, но разрешается не использовать часть из них.
Паскаль Бейсик
const N = 40; var a: array [1..N] of integer; i, k, j: integer; begin for i:=l to N do readln(a[i]}; end. N = 40 DIM A(N) AS INTEGER DIM I, K, J AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I END
СИ Алгоритмический язык
♦include <stdio.h> ♦define N 40 void main(void) {int a[N]; int i, k, j; for (i=0; i<N; i++) scanf ("%d", &a[i]); } алг нач цел N = 40 целтаб а[1:N] цел i, k, j нц для i от 1 до N ввод a[ i ] КЦ кон
Русский (естественный) язык
Объявляем массив А из 40 элементов. Объявляем целочисленные переменные I, К, J. В цикле от 1 до 40 вводим элементы массива А с 1-го по 40-й.
В качестве ответа вам необходимо привести фрагмент программы (или описание алгоритма
на естественном языке), который должен находиться на месте многоточия. Вы можете запи-
сать решение также на другом языке программирования (укажите название и используемую
версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом
случае вы должны использовать те же самые исходные данные и переменные, какие были пред-
ложены в условии (например, в образце, записанном на естественном языке).
26
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит две кучи кам-
ней. Игроки ходят по очереди, первый ход делает Петя. Назовём позицией игры указание ко-
личества камней в обеих кучах. Например, позиция (15,20) означает, что в первой куче 15 кам-
ней, а во второй — 20. За один ход игрок может добавить в одну из куч один камень или увели-
чить количество камней в одной из куч в два раза. Например, имея количество камней в кучах
(15,20), за один ход можно получить положение (16,20), (30,20), (15,21) и (15,30). У каждого
игрока, чтобы делать ходы, есть неограниченное количество камней.
Игра завершается в тот момент, когда количество камней в обеих кучах (сумма) становится
не менее 46. Победителем считается игрок, сделавший последний ход, т. е. первым получив-
ший положение, в котором сумма камней в кучах будет 46 или больше камней.
Говорят, что игрок имеет выигрышную стратегию, если он может выиграть при любых хо-
дах противника. Описать стратегию игрока — значит описать, какой ход он должен сделать в
любой ситуации, которая ему может встретиться при различной игре противника. Например,
при начальных позициях (6,20), (5,21), (8,19) выигрышная стратегия есть у Пети. Чтобы вы-
играть, ему достаточно удвоить количество камней во второй куче.
Выполните следующие задания.
Во всех случаях обосновывайте свой ответ.
1. Для исходных позиций (5,20) и (7,19) укажите, кто из игроков выигрывает. Сколько хо-
дов необходимо для выигрыша? Опишите выигрышную стратегию. Обоснуйте ответ.
2. Для исходных позиций (5,19), (6,19) и (7,18) укажите, кто из игроков выигрывает. Сколь-
ко ходов необходимо для выигрыша? Опишите выигрышную стратегию. Обоснуйте ответ.
3. Для исходной позиции (6,18) укажите, кто из игроков выигрывает. Сколько ходов необ-
ходимо для выигрыша? Опишите выигрышную стратегию. Приведите дерево игры. Обоснуйте
ответ. На рёбрах дерева указывайте, кто делает ход, в узлах — позицию игры.
27
После единых выпускных экзаменов по информатике в район пришла информация о том,
какой ученик какой школы сколько баллов набрал.
Районный методист решила выяснить фамилии учеников, которые набрали наибольший
балл, по каждой школе в отдельности, но только если из школы информатику сдавало не мень-
ше трех человек. Если в школе информатику сдавало меньше трех человек, информацию по
этой школе выводить не нужно.
Если в школе наибольший балл набрало несколько человек, нужно вывести фамилию лю-
бого из них.
Программа должна вывести на экран информацию в виде:
<Номер школы> <Фамилия ученика> .
В отдельной строке для каждой школы.
Напишите эффективную, в том числе и по используемой памяти, программу (укажите ис-
пользуемую версию языка программирования, например, Borland Pascal 7.0), которая должна
вывести на экран требуемую информацию. Известно, что информатику сдавало больше пяти
учеников района. Также известно, что в районе школы с некоторыми номерами не существуют.
На вход программе сначала подаётся число учеников, сдававших экзамен. В каждой из сле-
дующих N строк находится информация об учениках в формате:
<Фамилия> <Имя> <Номер школы> сКоличество баллов> ,
где <Фамилия> — строка, состоящая не более, чем из 30 символов без пробелов, <Имя> —
строка, состоящая не более, чем из 20 символов без пробелов, сНомер школы> — целое число
в диапазоне от 1 до 99, сКоличество баллов> — целое число диапазоне от 0 до 100. Эти данные
записаны через пробел, причём ровно один между каждой парой (т. е., всего по три пробела в
каждой строке).
Пример входной строки:
Иванов Иван 50 87
Пример выходных данных:
5 Иванов
50 Петров
74 Сидоров
ВАРИАНТ 18
Часть 1
Ответами к заданиям 1—23 являются число, последовательность букв или цифр, кото-
рые следует записать в БЛАНК ОТВЕТОВ № 1 справа от номера соответствующего зада-
ния, начиная с первой клеточки, без пробелов, запятых и других дополнительных симво-
лов. Каждый символ пишите в отдельной клеточке в соответствии с приведёнными в бланке
образцами.
Сколько чисел находится между С916 и D416?
Ответ:________________
2
Дан фрагмент таблицы истинности выражения F. Значения в пустых клетках таблицы
неизвестны и могут быть любыми из возможных.
А А *3 F
1 0 0
0 0 0
1 0 1
Перечислите в порядке возрастания без запятых и пробелов номера логических выраже-
ний, которые могут соответствовать F:
1)
2) xv/\^x2\Jxs
3) x,A-x2A-xa
4) xY\J-x2\Jx3
5) xtAx2Ax3
Ответ:.
3
Между населёнными пунктами А, В, С, D, Е, F построены дороги, протяжённость которых
приведена в таблице. (Отсутствие числа в таблице означает, что прямой дороги между пункта-
ми нет.)
I
1
н
Определите длину кратчайшего пути между пунктами А и F (при условии, что передвигать-
ся можно только по построенным дорогам).
Ответ:
4
Дан фрагмент базы данных, содержащий информацию о родственных отношениях. Опреде-
лите, сколько предков женского пола Жуйко А.И. упомянуто в таблице.
Таблица 1
ID Фамилия И.О. Пол
1518 Гираб В.А. М
1885 Жуйко А.И. м
2946 Калпен Л.В. м
3472 Арно В.А. /IV
4705 Иваненко И.Л. м
5624 Ирита Е.О. ’Ш' /TV
6109 Кирта У.Т. /IV
7296 Олинг К.Л. /IV
8434 Кименко З.Т. щ* /IV
9657 Вирк Я.М. /IV
...
Ответ:
Таблица 2
ГО_Родителя 1В_Ребёнка
1885 3472
6109 3472
9657 1885
4705 1885
2946 4705
5624 4705
8434 2946
1518 2946
2946 7296
5624 7296
...
5 Для передачи информации по каналу связи с помехами используется 5-битовый код. Сооб-
щение содержит только буквы А, В и С, которые кодируются следующими кодовыми словами:
А-01101, В-11000, С-10110.
Любые два из этих трёх кодовых слов отличаются не менее чем в трёх позициях.
Поэтому, если принятое кодовое слово отличается от допустимого не более чем в одной по-
зиции, можно однозначно определить, какая буква передавалась (говорят, что «код исправляет
одну ошибку»).
Так, получив кодовое слово 10000, можно догадаться, что передавалась буква В (отличие от
кодового слова для В только в одной позиции, для остальных кодовых слов отличий больше).
Если принятое кодовое слово отличается от всех допустимых кодовых слов более, чем в одной
позиции, считается, что произошла ошибка (она обозначается «г»)
Получено сообщение 01001 00011 10101 11001. Декодируйте это сообщение. В ответе ука-
жите четыре символа без пробелов и запятых.
Ответ:.
6 Автомат получает на вход трёхзначное число. По этому числу строится новое число по сле-
дующим правилам.
1. Складываются отдельно первая и вторая цифры, а также — вторая и третья цифры.
2. Полученные два числа записываются друг за другом в порядке неубывания без раздели-
телей.
Пример. Исходное число: 179. Суммы: 1 + 7 = 8; 7 + 9 = 16. Результат: 816.
Укажите наибольшее число, при обработке которого автомат выдаёт результат 710.
Ответ:
7
Дан фрагмент электронной таблицы:
А В С D
1 3 5
2 =С1-А1 -А2*2 =А1+2 =В1-В2
Какое число должно быть записано в ячейке В1, чтобы построенная после выполнения вы-
числений диаграмма по значениям диапазона ячеек A2:D2 соответствовала рисунку?
Ответ:.
8
Определите, что будет напечатано в результате выполнения следующего фрагмента про-
граммы:
Бейсик Паскаль
DIM k, s AS INTEGER к = 10 s = 3 WHILE s < 900 s = s * 2 к = к + 4 WEND PRINT к var k, s : integer; begin к := 10; s := 3; while s < 900 do begin s : = s * 2; k := к + 4 end; write(k) ; end.
Си Алгоритмический язык
( int к, s; к = 10; s = 3; while (s < 900) { s = s * 2 ; к = к + 4; } printf("%d", k); ) нач пел k, s k 10 s := 3 нц пока s < 900 s : = s * 2 k := k + 4 КЦ вывод k KOH
Ответ:__________________________________________________________________________________
9 Документ объёмом 16 Мбайт можно передать с одного компьютера на другой двумя спосо-
бами:
А. Сжать архиватором, передать по каналу связи, распаковать.
Б. Передать по каналу связи без использования архиватора.
Какой способ быстрее и на сколько, если:
• средняя скорость передачи данных по каналу связи составляет 221 бит в секунду;
• объем сжатого архиватором документа равен 25% исходного;
• время, требуемое на сжатие документа, — 8 секунд, на распаковку — 3 секунды?
В ответе напишите букву А, если быстрее способ А, или Б, если быстрее способ Б. Сразу
после буквы напишите число, обозначающее, на сколько секунд один способ быстрее другого.
Так, например, если способ Б быстрее способа А на 23 секунды, в ответе нужно написать
Б23.
Единиц измерения «секунд», «сек.», «с.» к ответу добавлять не нужно.
Ответ:.
10
11
В некотором племени для общения используется всего 64 слова. Вождь племени на общем
собрании произносит 32 слова. Какое количество информации (число бит) сообщает вождь?
Ответ:•
Определите, сколько звёздочек будет напечатано в результате вызова F(l) приведённой под-
программы:
Бейсик Паскаль
SUB F(n) IF n < 7. THEN F(n * 2) PRINT F(n + 1) END IF END SUB procedure F(n: integer); begin if n < 7 then begin F(n * 2); write (' *'); F(n + 1) end end;
Си Алгоритмический язык
void F(int n) ( if (n < 7) { F(n + 2); printf ("*"); F(n + 1); } } . алг F(цел n) нач если n < 7 то F(n + 2) вывод ’*’ F(n + 1) все кон
Ответ:,
12 В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая
часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети.
Обычно маска записывается по тем же правилам, что и 1Р-адрес, — в виде четырёх байтов, при-
чём каждый байт записывается в виде десятичного числа. При этом в маске сначала (в старших
разрядах) стоят единицы, а затем с некоторого разряда — нули.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному
IP-адресу узла и маске.
Например, если IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0, то адрес
сети равен 231.32.240.0.
Для узла с IP-адресом 117.203.214.56 адрес сети равен 117.203.192.0. Чему равно наиболь-
шее возможное значение третьего слева байта маски? Ответ запишите в виде десятичного числа.
Ответ:.
13 На стадионе имеется 10 секторов, в каждом из которых установлено по 80 кресел в 40 рядов.
При кодировании номера места автоматизированная система продажи билетов использует ми-
нимально возможное количество бит, одинаковое для каждого номера места, отдельно номер
сектора, номер ряда и номер места в ряду. При этом для записи кода используется минимально
возможное и одинаково целое количество байтов. Каков объём информации (в байтах), запи-
санный устройством после продажи 200 билетов?
Ответ:.
14
15
16
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может
выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение цепочки о на цепочку w. Например,
выполнение команды
заменить (222,34)
преобразует строку 77222277 в строку 7734277.
Если в строке нет вхождений цепочки V, то выполнение команды заменить (v, w) не меняет
эту строку.
Б) нашлось (v).
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она
встречается, то команда возвращает логическое значение «истина», в противном случае воз-
вращает значение «ложь». Строка исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда!
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда! (если условие истинно) или команда2 (если условие ложно).
Какая строка получится в результате применения приведенной ниже программы к строке,
состоящей из 69 идущих подряд цифр 7? В ответе запишите полученную строку.
НАЧАЛО
ПОКА нашлось (777) ИЛИ нашлось (888)
ЕСЛИ нашлось (888)
ТО заменить (888, 7)
ИНАЧЕ заменить (777, 8)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Ответ:.
На рисунке — схема дорог, связывающих го-
рода А, Б, В, Г, Д, Е, Ж, 3, И, К.
По каждой дороге можно двигаться только в
одном направлении, указанном стрелкой.
Сколько существует различных путей из горо-
да А в город К?
Ответ:______________________________________
Какое восьмеричное число находится ровно посередине между числами С816 и 110101002?
В ответе напишите только само число в 8-ричной системе счисления.
Основание системы счисления писать не нужно.
Ответ:
17 В языке запросов к поисковому серверу для обозначения логической операции «ИЛИ» ис-
пользуется символ «|», а для логической операции «И» — «&». В таблице приведено количе-
ство страниц, которое находит поисковая система по каждому запросу.
Запрос Количество найденных страниц (в тысячах)
Бирка & Табличка & Ценник 5
Бирка 36
Табличка 43
Ценник 48
Бирка & Табличка 18
Бирка & Ценник 20
Табличка & Ценник 28
Какое количество страниц (в тысячах) будет найдено этой поисковой системой по запросу
Бирка | Табличка | Ценник ?
Ответ:.
18 Для какого целого числа X истинно высказывание: (X > 6) Д -((X < 9) -> (X = 7))?
Ответ:___________________________________________________________________________
19
В программе используется целочисленный массив А с индексами от 0 до 9. Значения эле-
ментов массива равны 4; 5; 4; 7; 6; 3; 9; 11; 7; 8 соответственно, т. е. А[0] = 4; А[1]= 5 и т. д.
Определите значение переменной k после выполнения следующего фрагмента программы,
записанной ниже на разных языках программирования.
Бейсик Паскаль
к = 0 m = 0 FOR i = 1 ТО 9 IF A(i) > m THEN m = A (i) к = к + 1 ENDIF NEXT i к := 0; m : = А [ 0 ] ; for i := 1 to 9 do if A[i] > m then begin m : = A [ i ] ; к := к + 1; end;
Си Алгоритмический язык
к = 0; m = A [ 0 ] ; for (i=l ; i<=9 ; i++) if (A[i] > m) { m = A [ i ] ; к = к + 1; } k := 0 m : = A [ 0 ] нц для i от 1 до 9 если A[i] > m TO m : = A [i ] k := k + 1 все кц
Ответ:
20 Ниже на четырёх языках записан алгоритм. Получив на вход число х, этот алгоритм пе-
чатает два числа L и М. Укажите наименьшее число х, при вводе которого алгоритм печатает
сначала 3, а потом 7.
Бейсик Паскаль
DIM X, L, М AS INTEGER var x, L, M: integer;
INPUT X begin
L = 0 readln(x) ;
M = 0 L := 0;
WHILE X > 0 M := 0;
M = M + 1 while x > 0 do
X = X \ 2 begin
IF X MOD 2=0 THEN M := M + 1;
L = L + 1 x := x div 2;
ENDIF if x mod 2=0 then
WEND L := L + 1
PRINT L end;
PRINT M writein (L); write(M)
end.
Си Алгоритмический язык
#include<stdio.h> алг
void main() нач
{ цел х, L, М
int x, L, M; ВВОД X
scanf("%d", &x); L := 0
L = 0; М := 0
M = 0; нц пока х > 0
while (x > 0){ М : = М + 1
M = M + 1; х := div(x,2)
x = x/2; если mod(х,2) = 0
if(x%2 == 0) ТО
L = L + 1; L := L + 1
} все
printf("%d\n%d", L, M); кц
) ВЫВОД L, НС, М
кон
—
Ответ:,
21
Определите, при каком наибольшем значении b в результате выполнения следующего алгорит-
ма будет напечатано число 10 (для Вашего удобства алгоритм представлен на четырёх языках):
Бейсик Паскаль
DIM А, В AS INTEGER INPUT В А = 0 WHILE А < F(B) А = А + 1 WEND PRINT А FUNCTION F (х) IF х < 7 F = 0 ELSE F = F(x-7) + 1 END IF END FUNCTION var a, b : integer; function F(x : integer) : begin if x < 7 then F := 0 else F := F(x-7) + 1 end; BEGIN readln (b); a := 0; while a < F(b) do begin a : = a + 1 end; write (a) END. integer;
Си Алгоритмический язык
int F(int х) { if(x < 7) return 0; else return F(x-7) + 1; } void main() { int a, b; scanf("%d",&b); a = 0; while (a < F(b)) { a = a + 1; } printf("%d", a); ) алг нач цел а, Ь ввод.Ь а : = 0 нц пока а < F (Ь) а : = а + 1 кц вывод а кон алг цел F(цел х) нач если х < 7 то знач := 0 иначе знач := F(x-7) + 1 КЦ кон
Ответ:,
22 Исполнитель Июнь12 преобразует число на экране.
У исполнителя есть две команды, которым присвоены номера:
1. Прибавить 3
2. Умножить на 2
Первая команда увеличивает число на экране на 3, вторая умножает его на 2.
Программа для исполнителя Июнь12 — это последовательность команд.
Сколько существует программ, для которых при исходном числе 3 результатом является чис-
ло 45 и при этом траектория вычислений содержит число 18?
Траектория вычислений программы — это последовательность результатов выполнения
всех команд программы. Например, для программы 121 При исходном числе 7 траектория будет
состоять из чисел 10, 20, 23.
Ответ:.
23
Сколько существует различных наборов значений логических переменных хр х2, ... х7, х8,
которые удовлетворяют всем перечисленным ниже условиям?
(х1 = х2)\/(-х1 Дх3) V(Xj А’Х3) = 1
(х2 = х3) V (-х2 ДХ4) V (х2 Д -х4) = 1
(х3 = Х4) V(~*х3 Дх5) V(х3 /\ -Х5) = 1
(х4 = х5) V(’Х4 Д Х6) V(Х4 А -Хв) = 1
(х5 = х6) V (’Х5 Дх7) V(Х5 А ^х7) = 1
(xe = х7) у /\Х8) V(Х6 Д -х8) = 1
В ответе ненужно перечислять все различные наборы значений хр х2,... х7, xg, при которых
выполнена данная система равенств. В качестве ответа вам нужно указать количество таких
наборов.
Ответ:.
Не забудьте перенести все ответы в бланк ответов № 1 в соответствии с инструкцией
по выполнению работы.
Часть 2
Для записи ответов на задания этой части (24-27) используйте БЛАНК ОТВЕТОВ № 2.
Запишите сначала номер задания (24, 25 и т. д.), а затем полное решение. Ответы записы-
вайте чётко и разборчиво.
24
Требовалось написать программу, при выполнении кото-
рой с клавиатуры считываются координаты точки на плоскости
(х, у — действительные числа) и определяется принадлежность
этой точки заданной закрашенной области (включая границы).
Программист торопился и написал программу неправильно.
Ук
Паскаль Бейсик
var х, у: real; begin readln(х,у); if х*х + у*у <= 1 then if у >= х then if х <= 0 then write('принадлежит') else write('не принадлежит') end. INPUT x, у IF x*x t y*y <- 1 THEN , IF у >= x THEN IF x <= 0 THEN PRINT "принадлежит" ELSE PRINT "не принадлежит" ENDIF ENDIF ENDIF END
Си Алгоритмический язык
void main(void) { float x, y; scanf ("%f%f",&x,&y); if (x*x + y*y <= 1) if (У >= x) if (x <= 0) printf("принадлежит"); else printf("не принадлежит"); ) алг нач вещ х, у ввод х, у если х*х + у*у <= 1 то если у >= х то если х < = 0 то вывод ’принадлежит’ иначе вывод 1 не принадлежит• все все все кон
Последовательно выполните следующее.
1. Перерисуйте и заполните таблицу, которая показывает,
как работает программа при аргументах, принадлежащих раз-
личным областям (А, В, С, D, Е, F, G и П).
Точки, лежащие на границах областей, отдельно не рассма-
тривать.
Область Условие 1 (х*х+у*у<=1) Условие 2 (У>=х) Условие 3 (х<=0) Программа выведет Область обрабатывается верно
А
В
С
D
Е
F
G
Н
В столбцах условий укажите «да», если условие выполнится, «нет» если условие не вы-
полнится, « — » (прочерк), если условие не будет проверяться, «не изв.», если программа ведет
себя по-разному для разных значений, принадлежащих данной области. В столбце «Програм-
ма выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, на-
пишите « — » (прочерк). Если для разных значений, принадлежащих области, будут выведены
разные тексты, напишите «не изв». В последнем столбце укажите «да» или «нет».
2. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной ра-
боты. (Это можно сделать несколькими способами, достаточно указать любой способ доработки
исходной программы.)
25 Дан целочисленный массив из 40 элементов. Элементы массива могут принимать значения
от —10000 до 10000. Опишите на русском языке или на одном из языков программирования
алгоритм, который находит и выводит количество элементов массива, равных максимальному
элементу массива.
Исходные данные объявлены так, как показано ниже. Запрещается использовать перемен-
ные, не описанные ниже, но разрешается не использовать часть из них.
Паскаль Бейсик
const N = 40; var a: array [1..N] of integer; i, j, k, max: integer; begin for i := 1 to N do readln (a[i]); end. N = 40 DIM A(N) AS INTEGER DIM I, J, K, MAX AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I END
СИ Алгоритмический язык
♦include <stdio.h> . #define N 40 void main(void) {int a[N]; int i, j, k, max; for (i = 0; i< N; i++) scanf ("%d", &a[i]) ; } алг нач цел N - 40 целтаб a[l:N] цел i, j, k, max нц для i от 1 до N ввод a[i] КЦ кон
Русский (естественный) язык
Объявляем массив А из 40 элементов.
Объявляем целочисленные переменные I, J, К, МАХ.
В цикле от 1 до 40 вводим элементы массива А с 1-го по 40-й.
В качестве ответа вам необходимо привести фрагмент программы (или описание алгоритма
на естественном языке), который должен находиться на месте многоточия. Вы можете запи-
сать решение также на другом языке программирования (укажите название и используемую
версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом
случае вы должны использовать те же самые исходные данные и переменные, какие были пред-
ложены в условии (например, в образце, записанном на естественном языке).
26
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит две кучи кам-
ней. Игроки ходят по очереди, первый ход делает Петя. Назовем позицией игры указание ко-
личества камней в обеих кучах. Например, позиция (15,20) означает, что в первой куче 15 кам-
ней, а во второй — 20. За один ход игрок может добавить в одну из куч один камень или увели-
чить количество камней в одной из куч в два раза. Например, имея количество камней в кучах
(15,20), за один ход можно получить положение (16,20), (30,20), (15,21) и (15,30). У каждого
игрока, чтобы делать ходы, есть неограниченное количество камней.
Игра завершается в тот момент, когда количество камней в обеих кучах (сумма) становится
не менее 65. Победителем считается игрок, сделавший последний ход, т. е. первым получив-
ший положение, в котором сумма камней в кучах будет 65 или больше камней.
Говорят, что игрок имеет выигрышную стратегию, если он может выиграть при любых хо-
дах противника. Описать стратегию игрока — значит описать, какой ход он должен сделать в
любой ситуации, которая ему может встретиться при различной игре противника. Например,
при начальных позициях (4,31), (5,30), (7,29) выигрышная стратегия есть у Пети. Чтобы вы-
играть, ему достаточно удвоить количество камней во второй куче.
Выполните следующие задания. Во всех случаях обосновывайте свой ответ.
1. Для исходных позиций (4,30) и (6,29) укажите, кто из игроков выигрывает. Сколько хо-
дов необходимо для выигрыша? Опишите выигрышную стратегию. Обоснуйте ответ.
2. Для исходных позиций (4,29), (6,28) и (5,29) укажите, кто из игроков выигрывает. Сколь-
ко ходов необходимо для выигрыша? Опишите выигрышную стратегию. Обоснуйте ответ.
3. Для исходной позиции (5,28) укажите, кто из игроков выигрывает. Сколько ходов необ-
ходимо для выигрыша? Опишите выигрышную стратегию. Приведите дерево игры. Обоснуйте
ответ. На рёбрах дерева указывайте, кто делает ход, в узлах — позицию игры.
27 После единых выпускных экзаменов по информатике в район пришла информация о том,
какой ученик какой школы сколько баллов набрал. По положению об экзамене каждый район
сам определяет, за какой балл нужно поставить какую оценку.
Районный методист решила, что оценку «отлично» должны получить 20% участников (це-
лое число, с отбрасыванием дробной части).
Для этого она должна определить, какой балл должен был набрать ученик, чтобы получить
«отлично».
Если невозможно определить такой балл, чтобы «отлично» получили ровно 20% участни-
ков, «отлично» должно получить меньше участников, чем 20%.
Если таких участников не окажется (наибольший балл набрали больше 20% участников) —
эти и только эти ученики должны получить «отлично».
Напишите эффективную, в том числе и по используемой памяти, программу (укажите ис-
пользуемую версию языка программирования, например, Borland Pascal 7.0), которая должна
вывести на экран наименьший балл, который набрали участники, получившие «отлично». Из-
вестно, что информатику сдавало больше 5-ти учеников. Также известно, что есть такое коли-
чество баллов, которое не получил ни один участник.
На вход программе сначала подаётся число учеников, сдававших экзамен. В каждой из сле-
дующих N строк находится информация об учениках в формате:
<Фамилия> <Имя> сНомер школы> сКоличество баллов> ,
где сфамилия> — строка, состоящая не более, чем из 30 символов без пробелов, сИмя> —
строка, состоящая не более, чем из 20 символов без пробелов, сНомер школы> — целое число
в диапазоне от 1 до 99, сКоличество баллов> — целое число диапазоне от 1 до 100. Эти данные
записаны через пробел, причем ровно один между каждой парой (то есть, всего по три пробела
в каждой строке).
Пример входной строки:
Иванов Иван 50 87
Пример выходных данных:
78
ВАРИАНТ 19
Часть 1
Ответами к заданиям 1—23 являются число, последовательность букв или цифр, кото-
рые следует записать в БЛАНК ОТВЕТОВ № 1 справа от номера соответствующего зада-
ния, начиная с первой клеточки, без пробелов, запятых и других дополнительных симво-
лов. Каждый символ пишите в отдельной клеточке в соответствии с приведёнными в бланке
образцами.
Сколько существует различных двухзначных чисел в восьмеричной системе счисления?
Ответ:___________________________________________________________________________
2 Дан фрагмент таблицы истинности выражения F. Значения в пустых клетках таблицы не-
известны и могут быть любыми из возможных.
Х1 Х2 хз F
0 1
1 0 1 1
Перечислите в порядке возрастания без запятых и пробелов номера логических выраже-
ний, которые могут соответствовать F:
1)
2)
3) -х1/\х2/\-х3
4) -xx\Jx2\Jx2
5)
Ответ:__________________________________________________________________________________
3
Между населёнными пунктами А, В, С, D, Е, F построены дороги, протяжённость которых
приведена в таблице. (Отсутствие числа в таблице означает, что прямой дороги между пункта-
ми нет.)
и н я
я
Определите длину кратчайшего пути между пунктами А и F (при условии, что передвигать-
ся можно только по построенным дорогам).
Ответ:•
4
Для групповых операций с файлами используются маски имён файлов. Маска представ-
ляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов,
в которой также могут встречаться следующие символы.
Символ «?» (вопросительный знак) означает ровно один произвольный символ.
Символ «*» (звёздочка) означает любую последовательность символов произвольной дли-
ны, в том числе «*» может задавать и пустую последовательность.
Имеется список из нескольких масок:
go*?.?*? ?o*a.t*t ??d?*.*t* *od*.*?
Определите, какие из указанных файлов будут отобраны по ровно трём из приведённых масок:
1)godovaya.tt 2)goroda.txt 3)goda.ttf
4)godat.xt
В ответе перечислите номера файлов в порядке возрастания без пробелов и знаков препи-
нания.
Ответ:.
5
По каналу связи передаются сообщения, каждое из которых содержит: 8 букв А, 8 букв Б,
16 букв В, 32 букв Г, и 64 буквы Д (других букв в сообщениях нет).
Каждую букву кодируют двоичной последовательностью. При выборе кода учитывались
два требования:
а) ни одно кодовое слово не является началом другого (это нужно, чтобы код допускал одно-
значное декодирование);
б) общая длина закодированного сообщения должна быть как можно меньше.
Какова наименьшая возможная суммарная длина всех пяти кодовых слов?
Ответ:.
6 На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R
следующим образом.
1. Строится двоичная запись числа N.
2. К этой записи дописываются справа ещё два разряда по следующему правилу:
а) складываются все цифры двоичной записи, и остаток отделения суммы на 2 дописывается
в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;
б) над этой записью производятся те же действия — справа дописывается остаток от деления
суммы цифр на 2.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного чис-
ла N) является двоичной записью искомого числа R.
Укажите минимальное число R, которое превышает 97 и может являться результатом работы
алгоритма. В ответе это число запишите в десятичной системе.
Ответ:_________________________________________________________________________
Дан фрагмент электронной таблицы:
Л В С D
1 8
2 “В1/2 -С1-А2 =D2-A2-B2 =В1*2
Какое число должно быть записано в ячейке В1, чтобы построенная
после выполнения вычислений диаграмма по значениям диапазона яче-
ек A2:D2 соответствовала рисунку?
Ответ:___________________________________________________________
8
Определите, что будет напечатано в результате выполнения следующего фрагмента про-
граммы:
Бейсик Паскаль
DIM k, S AS INTEGER к = 25 s = 256 WHILE s > 6 s = s \ 2 к = к - 2 WEND PRINT к var k, s : integer; begin к := 25; s := 256; while s > 6 do begin s := s div 2; к := к - 2 end; write (k); end.
Си Алгоритмический язык
{ int к, s; к = 25; s = 256; while (s > 6) { s = s / 2 ; к = к - 2; } printf("%d", k) ; } нач цел k, s k := 25 s := 256 нц пока s > 6 s := div(s,2) k := k - 2 КЦ вывод k KOH
Ответ:__________________________________________________________________________________
9 Музыкальный фрагмент был оцифрован и записан в виде файла без использования сжатия
данных.
Получившийся файл был передан в город А по каналу связи за 90 секунд.
Затем тот же музыкальный фрагмент был оцифрован повторно с разрешением в 2 раза
меньше и частотой дискретизации в 1,5 раза меньше, чем в первый раз.
Сжатие данных не производилось.
Полученный файл был передан в город Б; пропускная способность канала связи с городом
Б в 3 раза ниже, чем канала связи с городом А.
Сколько секунд длилась передача файла в город Б?
В ответе запишите только целое число, единицу измерения писать не нужно.
Ответ:.
10 Вася составляет 4-буквенные слова, в которых есть только буквы С, Т, Е, П, А, причём буква
Е используется в каждом слове ровно 1 раз.
Каждая из других допустимых букв может встречаться в слове любое количество раз или не
встречаться совсем.
Словом считается любая допустимая последовательность букв, не обязательно осмысленная.
Сколько существует таких слов, которые может написать Вася?
Ответ:.
11
Определите, сколько звёздочек будет напечатано в результате вызова F(6) приведённой под-
программы:
Бейсик Паскаль
SUB F (п) IF n > 0 THEN PRINT F(n - 2) F(n\2) END IF PRINT END SUB procedure F(n: integer); begin if n > 0 then begin write ('*'); F(n - 2) ; F(n div 2) ; end write(1 *' ) end;
Си Алгоритмический язык
void F(int n) { if (n > 0) { printf F(n - 2); F(n/2); } printf ("*"); } алг F(цел n) нач если n > 0 то вывод 1 * ' F(n - 2) F(div(n,2) ) все вывод '*' КОН
Ответ:.
12 В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая
часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети.
Обычно маска записывается по тем же правилам, что и 1Р-адрес, — в виде четырёх байтов, при-
чём каждый байт записывается в виде десятичного числа. При этом в маске сначала (в старших
разрядах) стоят единицы, а затем с некоторого разряда — нули.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному
IP-адресу узла и маске.
Например, если IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0, то адрес
сети равен 231.32.240.0.
Для узла с IP-адресом 153.214.115.37 адрес сети равен 153.214.96.0. Чему равен третий сле-
ва байт маски? Ответ запишите в виде десятичного числа.
Ответ:.
13
При передаче сообщения используются только десятичные цифры, а также строчные и про-
писные буквы местного алфавита.
В местном алфавите 30 букв.
При этом используется посимвольное кодирование и каждый символ кодируется мини-
мально возможным количеством бит.
Каков объём информации (в байтах), записанный устройством после передачи 120 симво-
лов?
Ответ:_____________________________________________
14
Исполнитель Чертёжник перемещается на координатной плоскости, оставляя след в виде ли-
нии. Чертёжник может выполнять команду сместиться на (а, Ь), где а,Ь — целые числа. Эта коман-
да перемещает Чертёжника из точки с координатами (х, у) в точку с координатами (х + а;у + Ь).
Например, если Чертёжник находится в точке с координатами (4, 2), то команда сместиться
на (2, -3) переместит Чертёжника в точку (6,-1).
Цикл
ПОВТОРИ число РАЗ
последовательность команд
КОНЕЦ ПОВТОРИ
означает, что последовательность команд будет выполнена указанное число раз (число
должно быть натуральным).
Чертёжнику был дан для исполнения следующий алгоритм (буквами n, а, b обозначены не-
известные числа, при этом п > 1):
НАЧАЛО
сместиться на (4, 2)
ПОВТОРИ п РАЗ
сместиться на (а, Ь)
сместиться на (12, 8)
КОНЕЦ ПОВТОРИ
сместиться на (-25, -37)
КОНЕЦ
Укажите наименьшее возможное значение числа п, для которого найдутся такие значения
чисел а и Ь, что после выполнения программы Чертёжник возвратится в исходную точку.
Ответ:.
15 На рисунке — схема дорог, связывающих города А,
Б, В, Г, Д, Е, Ж, 3, И, К. По каждой дороге можно дви-
гаться только в одном направлении, указанном стрел-
кой. Сколько существует различных путей из города А
в город К, не проходящих через город 3?
Ответ:.
16
17~|
Решите уравнение: 305N+1 = 312N + 2Е1в. В ответе укажите значение переменной N.
Ответ: .
В языке запросов к поисковому серверу для обозначения логической операции «ИЛИ» ис-
пользуется символ «|», а для логической операции «И» — «&». В таблице приведено количе-
ство страниц, которое находит поисковая система по каждому запросу.
Запрос Количество найденных страниц (в тысячах)
Стул 24
Табурет 23
Стул & Кресло 10
Стул & Табурет 11
Кресло & Табурет 8
Стул | Кресло | Табурет 47
Стул & Кресло & Табурет 3
Какое количество страниц (в тысячах) будет найдено этой поисковой системой по запросу
Кресло ?
Ответ:
18
Какое количество натуральных чисел удовлетворяет логическому условию:
-(X >= 12) A -((X2 < 49) Д(Х > 4)) ?
Ответ: .
19
В программе используется целочисленный массив А с индексами от 0 до 9. Значения эле-
ментов массива равны 4; 5; 4; 7; 6; 3; 9; 11; 7; 8 соответственно, т. е. А[0] = 4; А[1] = 5 и т. д.
Определите значение переменной k после выполнения следующего фрагмента программы,
записанной ниже на разных языках программирования.
Бейсик Паскаль
к = 0 FOR i = 0 ТО 9 IF A(i) < A(9-i) THEN к = к + 1 t = A(i) A(i) = A(9-i) A(9-i) = t ENDIF NEXT i к : = 0; for i := 0 to 9 do if A[i] < A[9-i] then begin к := к + 1; t : = A [ i ] ; A[i] := A[9-i] ; A[9-i] : = t end;
Си Алгоритмический язык
к = 0; for (i = 0 ; i <= 9 ; i++) if (A[i] < A[9-i]) { к = к + 1; t = A [i ] ; A[i] = A[9-i] ; A[9—i] = t; } k := 0 нц для i от 0 до 9 если A[i] < A[9-i] TO k : = k + 1 t := A[i] A[i] := A[9-i] A[9-i] := t все кц
Ответ:,
20
Ниже на четырёх языках записан алгоритм. Получив на вход число х, этот алгоритм пе-
чатает 3 числа К, М и L. Укажите наименьшее число х, при вводе которого алгоритм печатает
сначала 3, потом 3, потом 1.
Бейсик Паскаль
DIM X, Y, К, L, M AS INTEGER INPUT X К = 0 L = 0 M = 0 WHILE X > 0 Y = X MOD 10 К = К + 1 var x, у, K, L, M: integer; begin readln(x) ; К := 0; L := 0 ; M := 0; while x > 0 do begin
IF Y MOD 2=0 THEN L = L + 1 у := x mod 10 ; К := К + 1;
ENDIF IF Y >= 5 THEN M = M + 1 ENDIF X = X \ 10 WEND if у mod 2=0 then L := L + 1; if у >= 5 then M := M + 1; x := x div 10 end;
PRINT K," ",L," ",M writeln(K,' ',L,' ',M) end.
Си Алгоритмический язык
#include<stdio.h> алг
void main() нач
{ цел х, у, К, L, М
int x, у, К, L, M; ВВОД X
scanf("%d", &x); К := 0
К = 0; L := 0
L = 0; М := 0
M = 0; нц пока х > 0
while (x > 0){ у := mod(х,10)
у = x%10; К := К + 1
К = К + 1; если mod(у,2) = 0
if(y%2 == 0) ТО
L = L + 1; L := L + 1
if(y >= 5) все
L = L + 1; если у >= 5
x = x/10; ТО
} М := М + 1
printf("%d %d %d", K, L, M); все
} х := div(х,10)
КЦ
вывод К, нс, L, нс, М
КОН
Ответ:,
21
Ниже на четырёх языках представлен алгоритм.
Определите, при каком наибольшем значении Ь в результате выполнения следующего алго-
ритма будет напечатано такое же число, как и при b == 300.
Бейсик Паскаль
DIM А, В AS INTEGER var a, b : integer;
INPUT В function F(x : integer) : integer;
А = 0 begin
WHILE А < F(B) if x = 0 then
А = А + 1 F := 0
WEND else
PRINT А F := F(x div 2) + 1 end;
FUNCTION F (х) BEGIN
IF х = 0 readln(b);
F = 0 a : = 0;
ELSE while a < F(b) do
F = F(x\2) + 1 begin
END IF a : = a + 1
END FUNCTION end; write(a) END.
Си Алгоритмический язык
int F(int х) { if (х == 0) return 0; else return F(x/2) + 1; } алг нач цел а, b ввод Ь а : = 0 нц пока а < F(b) а : = а + 1
void main() ( кц вывод а
int a, b; кон
scanf("%d",&b); a = 0 ; while (a < F(b)) { алг цел F(цел х) нач если х = 0
a = a + 1; } ТО знач := 0
printf("%d", a); } иначе знач := F(div(x,2)) + 1 КЦ кон
Ответ:.
22 У исполнителя Кузнечик две команды:
1. вычти 4,
2. вычти 5.
Первая из них уменьшает число на экране на 4, вторая уменьшает его на 5 (отрицательные
числа допускаются).
Программа для Кузнечика — это последовательность команд. Сколько различных чисел
можно получить из числа 6 с помощью программы, которая содержит ровно 8 команд?
Ответ:.
23
Сколько существует различных наборов значений логических переменных хр х2, ... хд, х10,
которые удовлетворяют всем перечисленным ниже условиям?
(х, = х2) V((х3 Дх4) VЦх3 А -х4)) = 1
(х3 = А ((*5 А*6) V(-х5 Д ~’Х6)) = О
(х5 = Xg) V ((х7 Дх8) V(’X7 А ^Х8)) = 1
(х7 = х8) А((х9 Дх10) V(^x9 А^х10)) = О
В ответе не нужно перечислять все различные наборы значений хр х2, ... х9, х10, при ко-
торых выполнена данная система равенств. В качестве ответа вам нужно указать количество
таких наборов.
Ответ:.
Не забудьте перенести все ответы в бланк ответов № 1 в соответствии с инструкцией
по выполнению работы.
Часть 2
Для записи ответов на задания этой части (24—27) используйте БЛАНК ОТВЕТОВ № 2.
Запишите сначала номер задания (24, 25 и т. д.), а затем полное решение. Ответы записы-
вайте чётко и разборчиво.
24
Требовалось написать программу, при выполнении кото-
рой с клавиатуры считывается координата точки на прямой
(х — действительное число) и определяется принадлежность
этой точки одному из выделенных отрезков В и D (включая
границы). Программист торопился и написал программу не-
правильно.
А В С D Е
Паскаль Бейсик
var х: real; begin readln (х); if х >= -2 then if x <= 7 then if x < 4 then write('не принадлежит') else write ('принадлежит') end. INPUT x IF x >= -2 THEN IF x <= 7 THEN IF x < 4 THEN PRINT "не принадлежит" ELSE PRINT "принадлежит" ENDIF ENDIF END
Си Алгоритмический язык
void main(void) { float x; scanf("%f",&x); if (x >= -2) if (x <= 7) if (x < 4) printf ("не принадлежит"); else printf("принадлежит"); } алг нач вещ х, у ВВОД X, у если х >= -2 то если х <= 7 то если х < 4 то вывод ’не принадлежит’ иначе вывод ’принадлежит’ все все все кон
Последовательно выполните следующее:
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при ар-
гументах, принадлежащих различным областям (А, В, С, D и Е). Границы (точки -2, 1, 4 и 7)
принадлежат заштрихованным областям (В и D соответственно).
Область Условие 1 («>=—2) Условие 2 (х<=7) Условие 3 (х<4) Программа выведет Область обрабатывается верно
А
В
С
D
Е
В столбцах условий укажите «да», если условие выполнится, «нет», если условие не вы-
полнится, « — » (прочерк), если условие не будет проверяться, «не изв.», если программа ведёт
себя по-разному для разных значений, принадлежащих данной области. В столбце «Програм-
ма выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, на-
пишите «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены
разные тексты, напишите «не изв.». В последнем столбце укажите «Да» или «Нет».
2. Укажите, как нужно доработать программу, чтобы не было случаев её неправильной ра-
боты. (Это можно сделать несколькими способами, поэтому можно указать любой способ до-
работки исходной программы.)
25 Дан целочисленный массив из 40 элементов. Элементы массива могут принимать значения
от -10000 до 10000. Опишите на русском языке или на одном из языков программирования
алгоритм, который проверяет, упорядочен ли массив по возрастанию (каждый последующий
элемент больше предыдущего). Если да, программа должна вывести «YES», в противном слу-
чае — «NO».
Исходные данные объявлены так, как показано ниже. Запрещается использовать перемен-
ные, не описанные ниже, но разрешается не использовать часть из них.
ПаЬкаль Бейсик
const N = 40; var a: array [1..N] of integer; i, j, k : integer; begin for i := 1 to N do readln(a[i]); end. N = 40 DIM A(N) AS INTEGER DIM I, J, К AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I END
СИ Алгоритмический язык
#include <stdio.h> # define N 40 void main(void) {int a[N]; int i, j, k; for (i =0; i < N; i++) scanf ("%d", &a[ij); } алг нач цел N = 40 целтаб a[l:N] цел i, j, k нц для i от 1 до N ввод a[i] кц кон
Русский (естественный) язык
Объявляем массив А из 40 элементов. Объявляем целочисленные переменные I, J, К. В цикле от 1 до 40 вводим элементы массива А с 1-го по 40-й.
В качестве ответа вам необходимо привести фрагмент программы (или описание алгоритма
на естественном языке), который должен находиться на месте многоточия. Вы можете запи-
сать решение также на другом языке программирования (укажите название и используемую
версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом
случае вы должны использовать те же самые исходные данные и переменные, какие были пред-
ложены в условии (например, в образце, записанном на естественном языке).
26
У исполнителя Калькулятор две команды, которым присвоены номера:
1. прибавь 3,
2. умножь на 3.
Первая из них увеличивает число на экране на 3, вторая — утраивает его.
Программа для Калькулятора — это последовательность команд.
Сколько есть программ, которые число 3 преобразуют в число 93?
Ответ обоснуйте.
27 На вход программе подаются сведения о неуспеваемости ученика за весь период его обуче-
ния в школе, за каждый месяц в отдельности. В первой строке сообщается количество месяцев
(N), которые проучился ученик. В каждой из N последующих строк: информация о количестве
двоек, которые получил ученик за каждый месяц в течение всего периода обучения в формате:
mmmmrn уууу kkk,
где mmmnun — название месяца (например, март или сентябрь), уууу — год, kkk — число двоек.
Пример: апрель 2006 12
Порядок строк произвольный. Год — не раньше 1990 (может быть позже).
Возможно, некоторые месяцы ученик не учился по причине болезни или каникул, и они
отсутствуют в списке. Возможно, некоторые годы ученик также не учился (находился в акаде-
мическом отпуске).
Напишите эффективную, в том числе и по используемой памяти программу, которая будет
выводить на экран годы, в которые ученик учился лучше, чем в первый год своего обучения.
Если нет таких лет, необходимо вывести об этом сообщение.
Считается, что ученик учится тем лучше, чем меньше у него двоек.
Пример входных данных:
6
январь 1995 12
февраль 1997 20
март 2001 5
апрель 2001 6
май 2005 10
июнь 2003 18
Пример выходных данных:
2001
2005
ВАРИАНТ 20
Часть 1
Ответами к заданиям 1—23 являются число, последовательность букв или цифр, кото-
рые следует записать в БЛАНК ОТВЕТОВ № 1 справа от номера соответствующего зада-
ния, начиная с первой клеточки, без пробелов, запятых и других дополнительных симво-
лов. Каждый символ пишите в отдельной клеточке в соответствии с приведёнными в бланке
образцами.
Во сколько раз 1011100002 больше, чем 101112? В ответе запишите только число в десятич-
ной системе счисления.
Ответ:.
Дан фрагмент таблицы истинности выражения F. Значения в пустых клетках таблицы не-
известны и могут быть любыми из возможных.
*1 Х2 х3 F
1 0 1 1
1 0 1
Перечислите в порядке возрастания без запятых и пробелов номера логических выраже-
ний, которые могут соответствовать F:
1)
2) ^х1\/х2\/х3
3) -х,\/^2\/х3
4) XjA^A^
5) XjV^V^
Ответ:.
3
Между населёнными пунктами А, В, С, D, Е, F построены дороги, протяжённость которых
приведена в таблице. (Отсутствие числа в таблице означает, что прямой дороги между пункта-
ми нет.)
А В С D Е F
А 3 8
В 3 6 8
С 8 6 3 4
D 3 1 3
Е 8 1 2
F 4 3 2
Определите длину кратчайшего пути между пунктами А и F (при условии, что передвигать-
ся можно только по построенным дорогам).
Ответ:
4
Дан фрагмент базы данных, содержащий информацию о родственных отношениях. Опреде-
лите, сколько потомков Арне А.А. женского рода упомянуто в таблице.
Таблица 1
ID Фамилия И.О. Пол
1453 Дени К.Д. /IV
2185 Ирта О.Б. лтл /IV
2605 Гано И.Е. /IV
3474 Ивенко Д.Я. м
4218 Бабенко А.Е. м
5363 Марченко Е.Е. м
5771 Арне А.А. м
7148 Камо Е.А. м
7814 Исава Г.А. •VT/» /IV
8208 Сорт А.К. /tv
...
Ответ:
Таблица 2
ТБ_Родителя ГО_Ребёнка
5363 4218
2185 4218
7148 5363
1453 5363
3474 1453
7814 1453
7148 2605
1453 2605
2605 8208
5771 7814
... ...
5_ По каналу связи передаются сообщения, каждое из которых содержит: 10 букв А, 10 букв Б,
20 букв В, 40 букв Г и 80 букв Д (других букв в сообщениях нет).
Каждую букву кодируют двоичной последовательностью. При выборе кода учитывались
два требования:
а) ни одно кодовое слово не является началом другого (это нужно, чтобы код допускал одно-
значное декодирование);
б) общая длина закодированного сообщения должна быть как можно меньше.
Какова наименьшая возможная длина сообщения?
Ответ:.
6 На вход алгоритма подается натуральное число N. Алгоритм строит по нему новое число R
следующим образом.
1. Строится двоичная запись числа N.
2. К этой записи дописываются справа ещё два разряда по следующему правилу:
а) складываются все цифры двоичной записи, и остаток от деления суммы на 2 дописывается
в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;
б) над этой записью производятся те же действия — справа дописывается остаток от деления
суммы цифр на 2.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного чис-
ла N) является двоичной записью искомого числа R.
Укажите минимальное число R, которое превышает 72 и может являться результатом работы
алгоритма. В ответе это число запишите в десятичной системе.
Ответ:.
Дан фрагмент электронной таблицы:
А В С D
1 3 7
2 -(B1-D2J/5 -С1-А1 -А1-2 =С2*3
Какое число должно быть записано в ячейке В1, чтобы построенная после выполнения вы-
числений диаграмма по значениям диапазона ячеек A2:D2 соответствовала рисунку?
Ответ:.
8
Определите, что будет напечатано в результате выполнения следующего фрагмента про
граммы:
Бейсик Паскаль
DIM k, S AS INTEGER s = 100 к = 2048 WHILE s > 40 s = s - 8 к = k\2 WEND PRINT к var k, s : integer; begin s := 100; к := 2048; while s > 40 do begin s : = s - 8 ; к := к div 2 end; write(k); end.
Си Алгоритмический язык
{ int к, s; s = 100; к = 2048; while (s > 40) { s = s - 8; к = k/2; } printf ("%d" , k) ; } нач цел k, s s := 100 k := 2048 нц пока s > 40 s := s - 8 k := div(k,2) КЦ вывод k KOH
Ответ: ,
9 Документ объёмом 3 Гбайт можно передать с одного компьютера на другой двумя способа-
ми:
А. Сжать архиватором, передать по каналу связи, распаковать.
Б. Передать по каналу связи без использования архиватора.
Какой способ быстрее и на сколько, если:
• средняя скорость передачи данных по каналу связи составляет 227 бит в секунду;
• объем сжатого архиватором документа равен 50% исходного;
• время, требуемое на сжатие документа, — 100 секунд, на распаковку — 20 секунд?
В ответе напишите букву А, если быстрее способ А, или Б, если быстрее способ Б. Сразу
после буквы напишите число, обозначающее, на сколько секунд один способ быстрее другого.
Так, например, если способ Б быстрее способа А на 23 секунды, в ответе нужно написать
Б23.
Единиц измерения «секунд», «сек.», «с.» к ответу добавлять не нужно.
Ответ:.
10
11
Вася составляет 4-буквенные слова, в которых есть только буквы И, В, А, Н, причём буква А
используется в каждом слове ровно 1 раз или не встречается вовсе. Каждая из других допусти-
мых букв может встречаться в слове любое количество раз или не встречаться совсем. Словом
считается любая допустимая последовательность букв, не обязательно осмысленная. Сколько
существует таких слов, которые может написать Вася?
Ответ:.
Даны рекурсивные алгоритмы F и G. Сколько символов «звёздочка» будет напечатано на
экране при выполнении вызова F(20)?
Бейсик Паскаль
SUB F(n) IF n > 0 THEN G(n - 1) END IF END SUB SUB G(n) PRINT IF n > 1 THEN F(n - 2) END IF END SUB procedure F(n: integer); forward; procedure G(n: integer); forward; procedure F(n: integer); begin if n > 0 then G(n - 1) end; procedure G(n: integer); begin write ('*'); if n > 1 then F(n - 2) end;
Си Алгоритмический язык
void F(int n); void G(int n); void F(int n){ if (n > 0) G(n - 1) ; } void G(int n){ printf ("*"); if (n > 1) F(n - 2) ; } алг F(цел n) нач если n > 0 то G(n - 1) все кон алг G(цел п) нач вывод ’*’ если п > 1 то F(n - 2) все кон
Ответ:,
12 В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, ка-
кая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой
сети. Обычно маска записывается по тем же правилам, что и IP-адрес. Адрес сети получается
в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске. При
этом адрес узла в сети (часть IP-адреса, задающего адрес самого узла в сети) не может состо-
ять из одних нулей или из одних единиц. Сколько компьютеров может быть в сети с маской:
255.255.254.0?
Ответ:.
13 Кабельная сеть проводит голосование среди зрителей о том, какой из 7-ми фильмов они
хотели бы посмотреть вечером. Автоматизированная система голосования использует для ко-
дирования номера каждого фильма минимально возможное и одинаковое количество бит. Ка-
бельной сетью пользуются 5000 человек. В голосовании участвовало 2000 человек. Каков объ-
ём информации (в байтах), записанный автоматизированной системой голосования?
Ответ:.
14
Исполнитель Чертёжник перемещается на координатной плоскости, оставляя след в виде ли-
нии. Чертёжник может выполнять команду сместиться на (а, Ь), где а,Ъ — целые числа. Эта ко-
манда перемещает Чертёжника из точки с координатами (х, у) в точку с координатами (х + а; у + Ь).
Например, если Чертёжник находится в точке с координатами (4, 2), то команда сместить-
ся на (2, -3) переместит Чертёжника в точку (6,—1).
Цикл
ПОВТОРИ число РАЗ
последовательность команд
КОНЕЦ ПОВТОРИ
означает, что последовательность команд будет выполнена указанное число раз (число
должно быть натуральным).
Чертёжнику был дан для исполнения следующий алгоритм (буквами п, а, Ъ обозначены не-
известные числа, при этом п > 1):
НАЧАЛО
сместиться на (12, -2)
ПОВТОРИ п РАЗ
сместиться на (а, Ь)
сместиться на (12, 8)
КОНЕЦ ПОВТОРИ
сместиться на (-47, -18)
КОНЕЦ
Укажите наименьшее возможное значение числа п, для которого найдутся такие значения
чисел а и Ъ, что после выполнения программы Чертёжник возвратится в исходную точку.
Ответ:.
15 На рисунке — схема дорог, связывающих города А,
Б, В, Г, Д, Е, Ж, 3, И, К. По каждой дороге можно дви-
гаться только в одном направлении, указанном стрелкой.
Сколько существует различных путей из города А в город
К, проходящих через город Е?
Ответ:.
16 В системе счисления с основанием 4 записано четырёхзначное число. Известно, что все
цифры числа разные. Какое самое маленькое число удовлетворяет этому условию? Ответ за-
пишите в десятичной системе счисления.
Ответ:.
17
В языке запросов к поисковому серверу для обозначения логической операции «ИЛИ» ис-
пользуется символ «|», а для логической операции «И» — ♦&». В таблице приведено количе-
ство страниц, которое находит поисковая система по каждому запросу.
Запрос Количество найденных страниц (в тысячах)
Лампа | Книга | Блокнот 63
Книга 32
Лампа 40
Лампа & Блокнот 15
Лампа & Книга 21
Книга & Блокнот 0
Какое количество страниц (в тысячах) будет найдено этой поисковой системой по запросу
Блокнот ?
Ответ:
18 Обозначим через ДЕЛ(п, т) утверждение «натуральное число п делится без остатка на на-
туральное число т».
Для какого наибольшего натурального числа А формула
-ДЕЛ(х, А) -> (ДЕЛ(х,6) -> ^ДЕЛ(х,8)) тождественно истинна (т. е. принимает значение 1
при любом натуральном значении переменной х)?
Ответ:.
19
20
В программе используется целочисленный массив А с индексами от 0 до 9. Значения эле-
ментов массива равны 3; 5; 1; 7; 10; 6; 9; 11; 7; 8 соответственно, т. е. А[0] = 3; А[ 1] = 5 и т. д.
Определите значение переменной k после выполнения следующего фрагмента программы,
записанной ниже на разных языках программирования.
Бейсик Паскаль
к = 0 к := 0;
FOR i = 0 ТО 9 for i := 0 to 9 do
IF A(i) MOD 2=0 AND k=0 THEN if (Afi] mod 2=0) and (k=0) then
к = A(i) ENDIF NEXT i к := Afi];
Си Алгоритмический язык
к = 0; k := 0
for (i = 0 ; i <= 9 ; i++) нц для i от 0 до 9
if (A[i]%2 == 0 && к == 0) если mod(Afi],2) = 0 и k = 0
к = Afi] ; ТО k := A[i] все кц
Ответ:•
Ниже на четырёх языках записан алгоритм. Получив на вход число х, этот алгоритм печа-
тает число М. Известно, что х > 50. Укажите наименьшее из таких чисел х (больших 50), при
вводе которых алгоритм печатает 14.
Бейсик Паскаль
DIM X, L, М AS INTEGER INPUT X M = 42 L = X IF L MOD 2=0 THEN M = 28 ENDIF WHILE L О M IF L > M THEN L = L - M ELSE M = M - L ENDIF WEND PRINT M var x, L, M: integer; begin readln(x); M := 42; L := x; if L mod 2=0 then M := 28; while L о M do if L > M then L := L - M else M := M - L; write(M) end.
Си Алгоритмический язык
#include<stdio.h> void main() { int x, L, M; scanf("%d", &x); M = 42; L = x; if (L%2 == 0) M = 28; while (L ! = M) if(L > M) L = L - M; else M = M - L; printf("%d", M); } алг нач цел х, L, М ввод X М := 42 L : = х если mod(L,2)=0 ТО М := 28 все нц пока L О М если L > М ТО L := L - М иначе М := М - L все кц вывод М кон
Ответ:__________________________________________________________________________________
21
Ниже на четырёх языках представлен алгоритм. Напишите в ответе число различных зна-
чений входной переменной k, при которых алгоритм выдает тот же ответ, что и при входном
значении k = 60. Значение k = 60 также включается в подсчёт различных значений k.
Бейсик Паскаль
DIM К, I AS INTEGER INPUT К 1 = 0 WHILE F(I) < К 1 = 1 + 1 WEND IF F(I)+F(I-1) < 2*K THEN PRINT I ELSE PRINT 1-1 END IF FUNCTION F (N) F = N * N - 10 END FUNCTION var k, i : longint; function f(n : longint) : longint; begin f := n * n - 10 end; begin readln(k); i := 0; while f(i) < k do i : = i + 1 ; if f (i)+f(i-1) < 2*k then writeln(i) else writein(i-1) end.
Си Алгоритмический язык
#include <stdio.h> long f(long n) { return n * n - 10; } void main(){ long k, i; scanf("%ld", &k); i = 0; while (f(i) < k) алг нач цел k, i ввод к i := 0 нц пока F(i) < к i := i + 1 КЦ если F(i)+F(i-1) < 2 * к
i++; if (f (i)+f(i-1) < 2*k) printf("%ld", i); else printf("%ld", i-1); ) то вывод i иначе вывод i-1 все КОН алг цел F (цел п) нач знач := п * п - 10 КОН
Ответ:
22 У исполнителя Кузнечик две команды:
1. прибавь 4,
2. вычти 2.
Первая из них увеличивает число на экране на 4, вторая — уменьшает его на 2 (отрицатель-
ные числа допускаются).
Программа для Кузнечика — это последовательность команд. Сколько различных чисел
можно получить из числа 0 с помощью программы, которая содержит не более 8 команд?
Ответ:.
23 Сколько существует различных наборов значений логических переменных хр х2, х3, х4, х6,
у4, у2, у3, у4, у5, которые удовлетворяют всем перечисленным ниже условиям?
(-«! \/Х2) Л(^Х2 \/Х3) Д(-Х3 \/Х4) Д(-Х4 \/Х5) = 1
(у. у2) Л(г/2 -> у3) /\(у3 у4) Л(з/4 -> у5) =1
(-l/j VXj) /\(-у2 Vx2) /\(-у3 Vx3) Л(-г/4 Vx4) Л(-г/5 Vx5) = 1
В ответе не нужно перечислять все различные наборы значений хр х2, х3, х4, х5, рр у2, у3,
у4, у3, при которых выполнена данная система равенств. В качестве ответа вам нужно указать
количество таких наборов.
Ответ:•
Не забудьте перенести все ответы в бланк ответов № 1 в соответствии с инструкцией
по выполнению работы.
Часть 2
Для записи ответов на задания этой части (24—27) используйте БЛАНК ОТВЕТОВ № 2.
Запишите сначала номер задания (24, 25 и т. д.), а затем полное решение. Ответы записы-
вайте чётко и разборчиво.
24~|
Требовалось написать программу, при выполнении кото-
рой с клавиатуры считывается координата точки на прямой
(х — действительное число) и определяется принадлежность
этой точки одному из выделенных отрезков В и D (включая
границы). Программист торопился и написал программу не-
правильно.
А В С D Е
3 5 7 9 х
Паскаль Бейсик
var х: real; begin readln(х); if х >= 3 then if x <- 9 then if x >= 7 then write('принадлежит') else write ('не принадлежит') end. INPUT x IF x >= 3 THEN IF x <= 9 THEN IF x >= 7 THEN PRINT "принадлежит" ELSE PRINT "не принадлежит" ENDIF ENDIF END
Си Алгоритмический язык
void main(void) { float x; scanf ("%f",&x); if (x >= 3) if (x <= 9) if (x >= 7) printf("принадлежит"); else printf("не принадлежит"); ) алг нач вещ х, у ввод х,у если х >= 3 то если х <= 9 то если х >= 7 то вывод ’принадлежит’ иначе вывод 'не принадлежит’ все все все кон
Последовательно выполните следующее:
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при ар-
гументах, принадлежащих различным областям (А, В, С, D и Е). Границы (точки 3, 5, 7 и 9)
принадлежат заштрихованным областям (В и D соответственно).
Область Условие 1 (х>=3) Условие 2 (х<=9) Условие 3 (х>=7) Программа выведет Область обрабаты вается верно
А
В
С
D
Е
В столбцах условий укажите «да», если условие выполнится, «нет», если условие не вы-
полнится, «— » (прочерк), если условие не будет проверяться, «не изв.», если программа ведёт
себя по-разному для разных значений, принадлежащих данной области. В столбце «Програм-
ма выведет» укажите, что программа выведет на экран.
Если программа ничего не выводит, напишите « — » (прочерк). Если для разных значений,
принадлежащих области, будут выведены разные тексты, напишите «не изв.». В последнем
столбце укажите «Да» или «Нет».
2. Укажите, как нужно доработать программу, чтобы не было случаев её неправильной ра-
боты. (Это можно сделать несколькими способами, поэтому можно указать любой способ до-
работки исходной программы.)
25
26
Дан целочисленный массив из 40 элементов. Элементы массива могут принимать значения
от -10000 до 10000. Опишите на русском языке или на одном из языков программирования
алгоритм, который проверяет, есть ли в массиве хотя бы один двузначный элемент. Программа
должна вывести на экран «YES» или «NO».
Исходные данные объявлены так, как показано ниже. Запрещается использовать перемен-
ные, не описанные ниже, но разрешается не использовать часть из них.
Паскаль Бейсик
const N = 40; var a: array [1..N] of integer; i, j, k : integer; begin for i := 1 to N do readln(a[i] ); end. N = 40 DIM A(N) AS INTEGER DIM I, J, К AS INTEGER FdR I = 1 TO N INPUT A(I) NEXT I END
СИ Алгоритмический язык
#include <stdio.h> # define N 40 void main(void) (int a[N]; int i, j, k; for (i = 0; i < N; i++) scanf ("%d", &a[i]); } алг нач цел N = 40 целтаб а[1:N] цел i, j, k нц для i от 1 до N ввод a[i] кц кон
Русский (естественный) язык
Объявляем массив А из 40 элементов. Объявляем целочисленные переменные I, J, К. В цикле от 1 до 40 вводим элементы массива А с 1-го по 40-й.
В качестве ответа вам необходимо привести фрагмент программы (или описание алгоритма
на естественном языке), который должен находиться на месте многоточия. Вы можете запи-
сать решение также на другом языке программирования (укажите название и используемую
версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом
случае вы должны использовать те же самые исходные данные и переменные, какие были пред-
ложены в условии (например, в образце, записанном на естественном языке).
Два игрока играют в следующую игру. На координатной плоскости в точке (1, 0) стоит фиш-
ка. Игроки ходят по очереди. Ход состоит в том, что игрок перемещает фишку из точки с коор-
динатами (х, у) в одну из трёх точек: в точку с координатами (х + 3, у), в точку (х, у + 3) или в
точку (х + 3, у + 3). Выигрывает игрок, после хода которого расстояние по прямой от фишки до
точки с координатами (0, 0) не меньше 13 единиц. Кто выигрывает при безошибочной игре обо-
их игроков — игрок, делающий первый ход, или игрок, делающий второй ход? Какими долж-
ны быть ходы выигрывающего игрока? Ответ обоснуйте.
27
Из населённого пункта R в населённый пункт Q ведут две дороги. Назовём их А и В.
Дороги идут невдалеке друг от друга, не пересекаются. Периодически между ними встре-
чаются соединительные дороги (связки), по которым можно переехать с дороги А на дорогу В
и обратно.
Необходимо найти кратчайшее расстояние между населёнными пунктами R и Q при усло-
вии, что можно ехать по любой дороге — А или В, и любое количество раз переезжать (если это
нужно/короче) по дорогам-связкам с одной дороги на другую.
На вход программе подаётся: в первой строке — число дорог-связок N.
В каждой из последующих N строк — три целых неотрицательных числа:
расстояние от предыдущей «развилки» по дороге А, расстояние от предыдущей развилки
по дороге В, длина дороги-связки (в последней строке длина дороги-связки равна нулю).
Пример входных данных:
4
3 7 3
12 2 4
3 10 5
7 6 0
Пример выходных данных:
22
ОТВЕТЫ
Вар 1 2 - 3 4 5 6 7 8 9 10
1 4 12 6 3 2 2 153 6 900 64
2 135 yzx xzy yxz yzx. zywx zxy 45 13 34
3 30 20 4 8 17:25 16:20 9 14 9 13
4 2 3474 3 4218 3 8 3 4 124 5
5 DF4C CDBACED 00 101 0 Cl 21 ABCA 9 224
6 21112 ВС 12112 DBx 11122 157 21221 960 54 66
7 6 =$B2+D$2 14 8 3 3 4 6 5 3
8 20 127 1024 33 50 17 192 23 33 32
9 32 2 4 80 129 1 16 A39 10 Б10
10 24 OOEO 243 4 351 5 400 50 324 1458
11 432101210 68 17 15 2133 13 12 25 25 35
12 EADCGBF CDBA CADB FCDA 19 23 224 240 240 62
13 420 32 100 400 8 600 640 160 125 300
14 5 4 23 27 36 8877 161 5545 316 3
15 75 30 36 41 16 25 24 32 28 21
16 7 7,14,28 5 5,13,21 46 99 28 274 9 333
17 3421 8900 11600 1500 16500 11 47 13 7 3
18 14 5 3 12 34 24 14 2 5 36
19 4 22 4 5 4 5 2 3 7 39
20 13 28 107 544 2235 997 127 74 950 210
21 6 298 18 199 496 134 64 63 128 12
22 9 7 7 47 276 25 44 70 7 17
23 243 32 192 108 72 32 97_ 364 16 16
Bap 11 12 13 14 15 16 17 18 19 20
1 7 10 10 2 3 3 232 10 56 16
2 3 yxz xzy yzx xzy yzwx xzy 23 24 35
3 15 35 20 19 16:30 14:10 11 12 10 12
4 5 4218 3 5363 1 3 134 3 24 4
5 BD6C CBBAE 100 1 A10 19 A110,B10,C0 AxxB 14 300
6 12122 AD 22112 xxD 11211 951 22211 916 102 78
7 -6 =$C1-A$3 6 17 4 2 1 7 8 13
8 60 41 256 840. 955 39 1024 46 13 8
9 1 480 2048 60 120 15 6 A3 7 90 A24
10 192 ДДБД 120 62 4 20 900 192 256 189
11 135424354 64 14 24 5779 25 15 19 28 7
12 GDEFCAB CBDA CBAD EFCA 22 20 248 224 224 510
13 1400 11 500 240 12 300 600 600 105 750
14 2 4 13 23 23 45544 223322 877 7 5
15 46 12 13 18 40 30 36 19 18 28
16 5 6,8,12,24 6 7,16,25 13 52 30 316 8 75
17 3124 2200 108 2600 13200 2 4 66 26 27
18 6 14 6 10 33 5 45 8 9 24
19 6 5 9 7 9 4 8 4 9 10
20 14 58 337 234 82 555 120 78 206 70
21 10 94 49 219 191 113 256 76 511 16
22 11 14 12 28 20 37 169 18 9 24
23 42 110 127 64 96 88 55 68 192 21
Вариант 1
24
Содержание верного ответа и указания по оцениванию (допускаются иные формулировки ответа, не искажающие его смысла) Баллы
Элементы ответа: 1)7 2) 128 (или любое натуральное число, в котором либо последняя цифра — наибольшая чётная, либо наибольшая чётная цифра в числе не 0 и больше последней цифры числа) 3) (Исправление программы на языке Паскаль) В строке «т := N mod 10;» должно быть «т := -1;», в строке «if m = 0 then» должно быть «if m = -1 then».
Указания по оцениванию
Обратите внимание! В задаче требовалось выполнить четыре действия (правильно ответить на вопросы 1 и 2 и исправить две ошибки). То есть: 1. Верно указать, что именно выведет программа при указанных в условии входных данных. 2. Указать число, при котором программа работает верно. 3-4. Указать и верно исправить две ошибки: а. Указать и верно исправить ошибку инициализации (не обязательно с упоминанием этого термина). б. Указать и верно исправить ошибку проверки на отсутствие чётных цифр в числе. Каждый из п. а) и б) считается выполненным, если: i) правильно указана строка с ошибкой; ii) указан такой новый вариант строки, что при исправлении другой ошибки получается правильная программа.
Правильно выполнены все пункты задания. Обе ошибки исправлены верно. Программа после исправлений для всех натуральных чисел N, не превосходящих 10®, верно определяет наибольшую чётную цифру. В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора решения. 3
2 балла за эту задачу выставляется в случае, если нельзя выставить 3 балла, и при этом выполняется один из двух случаев: 1) Правильно выполнены три действия из четырёх. Верное указание на ошибку при неверном исправлении при этом не засчитывается. При этом ни одна верная строка не указана как ошибочная. 2) Правильно выполнены все четыре действия. Не более одной верной строки указано как ошибочные. 2
Правильно выполнено только два действия из четырёх. Не важно, сколько верных строк указаны как неверные. 1
Все пункты задания выполнены неверно или отсутствуют. 0
Максимальный балл 3
25
На языке Паскаль На языке Бейсик
min:=100; for i:=l to N do MIN = 100 FOR I = 1 TO N
if (a[i]>=40) min:=a [ i]; writein(min); and (a[i]<min) then IF A(I) >= 40 AND A(I) < MIN THEN MIN = A(I) ENDIF NEXT I PRINT MIN
На языке СИ На алгоритмическом языке
min=100; for (i=0; i<N; i++) if (a[i]>=40 && a[i]<min) min=a[i]; printf ("%d", min); MIN := 100 нц для i от 1 до N если a [i]>=4 0 и a[i]<MIN ТО MIN : = a [i] все кц вывод MIN
На естественном языке
Записываем в переменную MIN начальное значение, равное 100. В цикле от первого элемента до двадцать восьмого сравниваем элементы исходного массива с 40. Если текущий элемент больше или равен 40, то сравниваем значение текущего элемента массива со значением переменной MIN. Если текущий элемент массива меньше MIN, то записываем в MIN значение этого элемента массива. Переходим к следующему элементу. После завершения цикла выводим значение переменной MIN.
26
Содержание верного ответа (допускаются иные формулировки ответа, не искажающие его смысла)
1а. При S=13...25. Во всех этих случаях Петя должен удвоить количество камней в куче и выиграть.
При значениях S<13 невозможно одним ходом (+1 или *2) получить 26 или больше камней.
16. При S=12. Куда бы ни пошёл Петя (12+1=13 или 12*2=24), Ваня удвоит число камней в куче и
выиграет (13*2=26, 24*2=48).
2. 8=11 или S=6. В обоих случаях Петя может получить в кучке 12 камней (11+1=12, 6*2=12). При
любом ответном ходе Вани (12+1=13 или 12*2=24), Петя должен удвоить число камней в куче и вы-
играть (13*2=26, 24*2=48).
3. S=10. Если Петя удвоит число камней в куче (10*2=20), Ваня тоже должен удвоить число камней
в куче и выиграть (20*2=40). Если Петя добавит 1 камень в кучу (10+1=11), Ваня также должен доба-
вить 1 камень в кучу (11+1=12).
В ответ на любой следующий ход Пети (12+1=13 или 12*2=24), Ваня должен удвоить число камней
в куче и выиграть (13*2=26, 24*2=48). Рассмотрим дерево игры:
в:*2
12 <С л В:*2
10<Г В:*2 п /7-«?24 »
/V«^20----►ДО»
26»
48»
В этом дереве в каждой позиции, где должен ходить Петя, разобраны все возможные ходы, а для по-
зиций, где должен ходить Ваня — только ход, соответствующий стратегии, которую выбрал Ваня.
27
var
i, a, N, res : integer;
max,max2nd,max2,max3,max6 : integer;
begin
max := 0; // наибольший элемент последовательности
max2nd := 0; // второй максимум последовательности
тахб := 0; // наибольший элемент, кратный 6-ти
тах2 := 0; // наибольший элемент, кратный 2-м и не кратный 6-ти
тахЗ := 0; // наибольший элемент, кратный 3-м и не кратный 6-ти
readln(N); // считываем N
for i := 1 to N do // перебираем все элементы последовательности
begin
readln(а); // считываем очередной элемент
// ищем максимум и второй максимум
if а > max then
begin
max2nd := max;
max.:= a
end
else
if a > max2nd then
max2nd := a;
// ищем наибольший кратный 6-ти
if a mod 6=0 then // если кратен 6-ти
begin
if а > тахб then
тахб := a
end
else // если не кратен 6-ти
if a mod 3=0 then // если кратен 3-м
begin
if а > тахЗ then
тахЗ := а
end
else // если не кратен 6-ти и не кратен 3-м
if a mod 2=0 then // если кратен 2-м
if а > max2 then
тах2 := а
end;
// Ищем максимальное произведение.
// Возможно, произведение кратно 6-ти, потому что
// один из сомножителей кратен 6-ти. Тогда возможно 2 случая:
// 1) общий максимум не кратен 6-ти.
// Тогда его нужно умножить на максимум кратный 6-ти.
// 2) общий максимум кратен 6-ти.
// Тогда его нужно умножить на 2-й максимум
if max = тахб then // если максимальное значение кратно 6-ти
// тогда кандидат в максимумы — наибольшее значение * 2-й максимум
res := max * max2nd
else // если максимум не кратен 6-ти
// тогда кандидат в максимумы — наибольшее значение * наиб, кратный 6
res := max * тахб;
// Еще может оказаться, что произведение кратно 6-ти, потому что
// один сомножитель кратен 2-м, а второй кратен 3-м.
// Сравним этот результат с предыдущим кандидатом.
// Большее значение выведем на экран
if max2 * тахЗ > res then
writein(тах2 * тахЗ)
else
writein(res)
end.
Вариант 2
24
Содержание верного ответа и указания по оцениванию (допускаются иные формулировки ответа, не искажающие его смысла) Баллы
Элементы ответа: 1)2. 2) 346 (или любое натуральное число, в котором первая цифра — единственная в числе нечётная цифра, большая 1, либо в котором первая цифра 1, а вторая цифра на 1 больше, чем сумма нечётных цифр в числе). 3) (Исправление программы на языке Паскаль.) В строке «while N > 1 do» должно быть «while N > 0 do», в строке «writeIn (d) » должно быть «writeln(sum)».
Указания по оцениванию
Обратите внимание! В задаче требовалось выполнить четыре действия (правильно ответить на вопросы 1 и 2 и исправить две ошибки). То есть: 1. Верно указать, что именно выведет программа при указанных в условии входных данных. 2. Указать число, при котором программа работает верно. 3- 4. Указать и верно исправить две ошибки: а. Указать и верно исправить ошибку условия цикла. б. Указать и верно исправить ошибку вывода на экран не той переменной. Каждый из п. а) и б) считается выполненным, если: 1) правильно указана строка с ошибкой; ii) указан такой новый вариант строки, что при исправлении другой ошибки получается правильная программа.
Правильно выполнены все пункты задания. Обе ошибки исправлены верно. Программа после исправлений для всех натуральных чисел N, не превосходящих 109, верно определяет сумму нечётных цифр. В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора решения. 3
2 балла за эту задачу выставляется в случае, если нельзя выставить 3 балла, и при этом выполняется один из двух случаев: 1) Правильно выполнены три действия из четырёх. Верное указание на ошибку при неверном исправлении при этом не засчитывается. При этом ни одна верная строка не указана как ошибочная. 2) Правильно выполнены все четыре действия. Не более одной верной строки указано как ошибочные. 2
Правильно выполнено только два действия из четырёх. Не важно, сколько верных строк указаны как неверные. 1
Все пункты задания выполнены неверно или отсутствуют. 0
Максимальный балл 3
25
На языке Паскаль На языке Бейсик
j:=l; while (j<N) and (a[j]<=0) do j:=j+l; if a[j]<=0 then writein('нет таких') else begin for i:=j to N do if (a[i]>0) and (a[i]<a[j]) then j:=i; writein(a[j]) end; Другой способ: j:=0; for i:=1 to N do if a [i]>0 then if (j=0) or <a[i]<a[j]) then j :=i; if j=0 then writein('нет таких') else writein (a [ j]); J = 1 WHILE J<N AND A(J)<=0 J = J + 1 ENDW IF A(J)<=0 THEN PRINT "нет таких" ELSE FOR I = J TO N IF A(I)>0 AND A(I)<A(J) THEN J = I ENDIF NEXT I PRINT A(J) ENDIF
На языке СИ На алгоритмическом языке
for(j=0 ; j<N && a[j]<=0 ; j++) if(a[j]<=0) printf("нет таких"); else { for(i=j ; i<N ; i++) if(a[i]>0 && a[i]<a[j]> j=i; printf ( "%f",a [ j]); ) j := 1 нц пока j<N и a[j]<=0 j := j+1 КЦ если a[j]<=0 TO вывод ’нет таких’ иначе нц для i от j до N если a[i]>0 и a[i]<a[j] то j := i все кц вывод а[j] все
На естественном языке
Записываем в переменную J начальное значение, равное 1. В цикле пока J меньше 40 и пока «J-й элемент неполо- жительный, увеличиваем переменную J на единицу (ищем номер первого положительного элемента). Если после окончания цикла элемент массива с номером J неположительный — выводим сообщение, что положительных элементов в массиве нет и заканчиваем работу. Иначе, от J-ro элемента до сорокового сравниваем значение те- кущего элемента с нулём и со значением J-ro элемента. Если значение текущего элемента больше нуля и меньше чем значение J-ro элемента, то в переменную J записываем номер текущего элемента. После окончания цикла выводим значение J-ro элемента.
26
Содержание верного ответа и указания к оцениванию (допускаются иные формулировки ответа,
не искажающие его смысла)
1а. При S=18...27. Во всех этих случаях Петя должен добавить в кучу 10 камней и выиграть. При
значениях S<18 невозможно одним ходом (+1 или +10) получить 28 или больше камней.
16. При S=17. Куда бы ни пошел Петя (17+1=18 или 17+10=27), Ваня добавит в кучу 10 камней
и выиграет (18+10=28, 27+10=37).
2. S=16 или S=7. В обоих случаях Петя может получить в кучке 17 камней (16+1=17, 7+10=17).
При любом ответном ходе Вани (17+1=18 или 17+10=27), Петя должен добавить в кучу 10 камней и вы-
играть (18+10=28, 27+10=37).
3. S=15. Если Петя добавит 10 камней в кучу (15+10=25), Ваня тоже должен добавить 10 камней в
кучу и выиграть (25+10=35). Если Петя добавит 1 камень в кучу (15+1=16), Ваня также должен доба-
вить 1 камень в кучу (16+1=17).
В ответ на любой следующий ход Пети (17+1=18 или 17+10=27), Ваня должен добавить 10 камней в
кучу и выиграть (18+10=28, 27+10=37). Рассмотрим дерево игры:
в:+1р
28»
В:+1С)
-----*”37»
В этом дереве в каждой позиции, где должен ходить Петя, разобраны все возможные ходы, а для по-
зиций, где должен ходить Ваня — только ход, соответствующий стратегии, которую выбрал Ваня.
27
var
i, j, х, max, maxi, N : integer;
a : array [1..5] of integer; // предыдущие введенные 5 элементов
begin
readln(N);
for i := 1 to 5 do
readln(a[i]); // запоминаем первые 5 элементов последовательности
max := 0; // начальное значение максимальной искомой суммы
maxi := а[1]; // начальное значение максимального элемента, отстоящего
// от текущего элемента не менее чем на 5
for i := 6 to N do
begin
readln(x); // считываем очередной элемент
if a[l] > maxi then // обновляем, при необходимости, текущий maxi
maxi := a[1];
if x + maxi > max then // если сумма текущего элемента и отстоящего
// от него на 5 элементов ранее максимума больше max
max := х + maxi; // считаем ее новым максимумом
for j := 1 to 4 do // сдвигаем массив 5-ти последних элементов на 1
а[j] := а [ j+1];
а[5] := х // текущий элемент запоминаем в его "хвосте"
end;
writein(max)
end.
Вариант 3
24
Содержание верного ответа и указания по оцениванию (допускаются иные формулировки ответа, не искажающие его смысла) Баллы
Элементы ответа: 1)7. 2) 10 (или любое натуральное число, оканчивающееся на 0). 3) (Исправление программы на языке Паскаль.) В строке «з : = 0;» должно быть «s : = N mod 10;».
Указания по оцениванию
Обратите внимание! В задаче требовалось выполнить три действия. Баллы за данное задание начисляются как сумма баллов за верное выполнение каждого действия. 1. Верно указано, что именно выведет программа при указанных в условии входных данных. 2. Указано число, при'котором программа работает верно.
3. Указана и верно исправлена ошибка инициализации (не обязательно с упоминанием этого термина). Пункт 3 считается выполненным, если: а) правильно указана строка с ошибкой; б) указан такой новый вариант строки, что при исправлении ошибки получается правильная программа.
Правильно выполнены все пункты задания. Ошибка исправлена верно. Программа после исправ- лений для всех натуральных чисел N, не превосходящих 109, верно определяет сумму цифр числа. В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не ис- кажающих замысла автора решения. 3
Правильно выполнены два действия из трёх. Верное указание на ошибку при неверном исправлении при этом не засчитывается. 2
Правильно выполнено только одно действие из трёх, т. е., либо только выполнен пункт 1, либо пункт 2, либо верно исправлена ошибка путём её явного указания и исправления или в новом тексте про- граммы. 1
Все пункты задания выполнены неверно или отсутствуют. 0
Максимальный балл 3
25
На языке Паскаль На языке Бейсик
max:=а[1]; тах2:=а[2]; if тах<тах2 then begin тах:=а[2]; тах2:=а[1] end; for i:=3 to N do if a[i]>max then begin max2:=max; max:=a[i] end else if a[i]>max2 then max2:=a[i]; writein(max2); MAX = A(l) MAX2 = A(2) IF MAX < MAX2 THEN MAX = A(2) MAX2 = A(l) ENDIF FOR I = 3 TO N IF A(I) > MAX THEN MAX2 «= MAX MAX = A(I) ELSE IF A(I) > MAX2 THEN MAX2 = A (I) ENDIF ENDIF NEXT I PRINT MAX2
На языке СИ На алгоритмическом языке
max=a[0]; max2=a[ 1 ] ; if(max<max2) { max=a[1]; max2=a [ 0]; } for(i=2 ; i<N ; i++) if(a[i]>max) { max2=max; max=a [ i ] ; } else if(a[i]>max2) max2=a [ i] ; printf("%d",max2); MAX := a [ 1 ] MAX2 := a[2] если MAX < MAX2 TO MAX := a[2] MAX2 := a[l] все нц для i от 3 до N если a[i]>MAX TO MAX2 := MAX MAX := a[i] иначе если a[i]>MAX2 TO MAX2 := a[i] все все кц вывод MAX2
На естественном языке
Записываем в переменную МАХ начальное значение, равное значению первого элемента массива. В перемен-
ную МАХ2 записываем начальное значение, равное значению второго элемента массива. Если значение МАХ
оказывается меньше значения МАХ2, то в переменную МАХ записываем значение второго элемента массива, а
в переменную МАХ — значение первого элемента массива.
В цикле перебираем все элементы с 3-го до 40-го. Если значение текущего элемента массива оказывается больше
значения переменной МАХ, то в переменную МАХ2 записываем значение переменной МАХ, а в переменную
МАХ записываем значение текущего элемента массива.
Иначе, если значение текущего элемента массива оказывается больше значения переменной МАХ2, записываем
в переменную МАХ2 значение текущего элемента.
Выводим значение переменной МАХ2.
26
Содержание верного ответа и указания к оцениванию (допускаются иные формулировки ответа,
не искажающие его смысла)
1а. При S=14...26. Во всех этих случаях Петя должен увеличить количество камней в куче в два раза
и выиграть. При значениях S<14 невозможно одним ходом (+1, +2 или *2) получить 27 или больше
камней.
16. При S=13. Куда бы ни пошёл Петя (13+1=14,13+2=15 или 13*2=26), Ваня удвоит число камней
в куче и выиграет (14*2=28, 15*2=30 или 26*2=52).
2. S=ll или S=12. В обоих случаях Петя должен получить в кучке 13 камней (11+2=13, 12+1=13).
При любом ответном ходе Вани (13+1=14, 13+2=15 или 13*3=39), Петя должен удвоить число камней
в куче и выиграть (14*2=28, 15*2=30 или 26*2=52).
3. S=10. Если Петя добавит в кучу 1 или 2 камня (10+1=11 или 10+2=12), Ваня должен получить
в куче 13 камней (11+2=13, 12+1=13) и в ответ на любой ход Пети (13+1=14, 13+2=15 или 13*3=39),
Ваня должен удвоить число камней в куче и выиграть (14*2=28, 15*2=30 или 26*2=52). Если Петя
удвоит число камней в куче (10*2=20), Ваня также должен удвоить число камней в куче и выиграть
(20*2=40).
Рассмотрим дерево игры:
Дерево всех партий, возможных при Ваниной стратегии. Знаком «>>» обозначены позиции, в ко
торых партия заканчивается.
27
var
i, х, N, res : integer;
max, max2, min, min2 : integer;
begin
readln(N);
max := -10001; max2 := max;
min := 10001; min2 := min;
for i := 1 to N do
begin
readln(x); // считываем очередной элемент
// ищем первый и второй максимум
if х > max then
begin
max2 := max;
max := x
end
else
. if x > max2 then
max2 := x;
// ищем первый и второй минимум
if х < min then
begin
min2 := min;
min := x
end
else
if x < min2 then
min2 := x
end;
res := max * max2;
if min * min2 < res then
res := min * min2;
if min * max < res then
res := min * max;
writein(res)
end.
Вариант 4
24
Содержание верного ответа и указания по оцениванию (допускаются иные формулировки ответа, не искажающие его смысла) Баллы
Элементы ответа: 1) «NO». 2) 1 2 3 4 (или любая последовательность четырёх целых чисел, у которой сумма чётных чисел больше нуля). 3) (Исправление программы на языке Паскаль.) В строке «count : = 1; » должно быть «count := 0;». В строке «if sum > 0 then» должно быть «if count > 0 then».
Указания по оцениванию
Обратите внимание! В задаче требовалось выполнить четыре действия: 1. Указать, что выведет программа для указанных входных данных. 2. Привести пример входных данных, при которых программа работает верно. 3. Исправить одну ошибку в программе. 4. Исправить вторую ошибку в программе.
Правильно выполнены все пункты задания. Ошибки исправлены верно. В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не ис- кажающих замысла автора решения. Ни одна правильная строка не указана в качестве неправильной. 3
Правильно выполнены три действия из четырёх. Верное указание на ошибку при неверном исправ- лении при этом не засчитывается. Не более одной верной строки указано как неправильная. 2
Правильно выполнено два действия из четырёх. Не более одной верной строки указано в качестве неверной. 1
Правильно выполнено менее двух действий 0
Максимальный балл 3
25
На языке Паскаль На языке Бейсик
1тах:=0; 1:=1; s:=а [1] ; for i:=2 to N do if a[i]>a[i-l] then begin 1—1+1; s:=s+a[i] end else begin if l>lmax then begin lmax:=1; smax:=s end; 1:=1; s : —a [ i ] end; if l>lmax then smax: = s; writein(smax); LMAX = 0 L = 1 S = A(l) FOR I = 2 TO N IF A(I)>A(I-1) THEN L = L + 1 S = S + A(I) ELSE IF L > LMAX THEN LMAX = L SMAX = S ENDIF L = 1 S = A(I) ENDIF NEXT I IF L > LMAX THEN SMAX = S ENDIF PRINT SMAX
На языке СИ На алгоритмическом языке
1тах=0; 1 = 1; s=a[0]; for(i=l ; i<N ; i++) if(a[i]>a[i-l]) { 1++; s+=a [ i]; } else { if (l>lmax) { lmax=l; smax=s; } 1=1; s=a[i]; } if(l>lmax) smax=s; printf("%d",smax); Lmax := 0 L := 1 S := a[l] нц для i от 2 до N если a[i]>a[i-1] TO L : = L+l S := S+a[i] иначе если L > Lmax TO Lmax := L Smax := S все L := 1 S := a[i] все кц если L > Lmax TO Smax := S все вывод Smax
На естественном языке
Записываем в переменную Lmax начальное значение, равное нулю, в переменную L — начальное
значение, равное единице, в переменную S — начальное значение, равное первому элементу массива.
В цикле перебираем все элементы со 2-го до 40-го. Если значение текущего элемента массива оказывается
больше значения предыдущего элемента:
- увеличиваем значение переменной L на 1;
- увеличиваем значение переменной S на значение текущего элемента.
Иначе:
- если значение переменной L больше значения переменной Lmax, то переменной Lmax присваиваем
значение переменной L, а переменной Smax присваиваем значение переменной S;
- переменной L присваиваем значение 1;
— переменной S присваиваем значение текущего элемента массива.
После окончания цикла, если значение переменной L оказалось больше значения переменной Lmax,
присваиваем переменной Smax значение переменной S.
Выводим значение переменной Smax.
26
Содержание верного ответа и указания к оцениванию (допускаются иные формулировки
ответа, не искажающие его смысла)
1 а. При S=15...29. Во всех этих случаях Петя должен увеличить количество камней в куче
в два раза и выиграть. При значениях S<15 невозможно одним ходом (+2, +3 или *2) получить
30 или больше камней.
1 6. При S=13 или S=14. Куда бы ни пошёл Петя (13+2=15, 13+3=16, 13*2=26, 14+2=16,
14+3=17 или 14*2=28), Ваня удвоит число камней в куче и выиграет (15*2=30, 16*2=32,
17*2=34, 26*2=52 или 28*2=56).
2. Верный ответ: любые 2 значения среди S=7, S=10, S=ll или S=12. Например, S=ll или
S=12. В обоих случаях Петя должен получить в кучке 14 камней (11+3=14, 12+2=14). При лю-
бом ответном ходе Вани (14+2=16, 14+3=17 или 14*2=28), Петя должен удвоить число камней
в куче и выиграть (16*2=32, 17*2=34 или 28*2=56).
3. S=9 (также верный ответ S=8). Если Петя добавит в кучу 2 или 3 камня (9+2=11 или
9+3=12), Ваня должен получить в куче 14 камней (11+3=14, 12+2=14) и в ответ.на любой ход
Пети (14+2=16, 14+3=17 или 14*2=28), Ваня должен удвоить число камней в куче и выиграть
(16*2=32,17*2=34 или 28*2=56). Если Петя удвоит число камней в куче (9*2=18), Ваня также
должен удвоить число камней в куче и выиграть (18*2=36).
Рассмотрим дерево игры:
Дерево всех партий, возможных при Ваниной стратегии. Знаком «>>» обозначены пози-
ции, в которых партия заканчивается.
27
var ch,стах:char;
num:array['A'..'Z1]of integer; {массив количества букв алфавита)
k: integer;
begin
for ch:='A' to ' Z' do num[ch]:=0; {обнуляем массив)
read(ch) ;
while cho'#' do
begin
{если текущий символ - буква)
if (upcase(ch)>=’А') and (upcase (ch)<='Z') then
inc(num[upcase(ch)]);
read(ch)
end;
k:=l; cmax:='A';
for ch:='B' to ' Z' do
if num[ch]>num[стах] then
begin
cmax:=ch; k:=l
end
else
if num[ch]=num[cmax] then k:=k+l;
if k=l then writein(стах)
else
for ch:='A' to 'Z' do
if num[ch]=num[стах] then write(ch,1 ');
writein(k)
end.
Вариант 5
24
Содержание верного ответа и указания по оцениванию (допускаются иные формулировки ответа, не искажающие его смысла) Баллы
Элементы ответа: 1)6. 2) 1 2 4 6 (или любая последовательность 4-х целых чисел, в которой нечётные числа — единицы, а остальные числа — чётные). 3) (Исправление программы на языке Паскаль.) BcrpoKe«if a mod 2 > 0 then» должно быть «if a mod 2 о 0 then». В строке «count := count + а» должно быть «count := count + 1».
Указания по оцениванию
Обратите внимание! В задаче требовалось выполнить четыре действия: 1. Указать, что выведет программа для указанных входных данных. 2. Привести пример входных данных, при которых программа работает верно. 3. Исправить одну ошибку в программе. 4. Исправить вторую ошибку в программе.
Правильно выполнены все пункты задания. Ошибки исправлены верно. В работе (во фрагментах программ) допускается наличие отдельных синтаксических оши- бок, не искажающих замысла автора решения. Ни одна правильная строка не указана в качестве неправильной. 3
Правильно выполнены три действия из четырёх. Верное указание на ошибку при невер- ном исправлении при этом не засчитывается. Не более одной верной строки указано как неправильная. 2
Правильно выполнено два действия из четырёх. Не более одной верной строки указано в качестве неверной. 1
Правильно выполнено менее двух действий. 0
Максимальный балл 3
25
На языке Паскаль На языке Бейсик
min:=1; min2:=2; if a[min]>а[min2] then begin min:=2; min2:=1 end; for i:=3 to N do if a[i]<a[min] then begin min2:=min; min:=i end else if a[i]<a[min2] then min2:=i; writein (min, min2); MIN = 1 MIN2 = 2 IF A(MIN) > A(MIN2) THEN MIN = 2 MIN2 = 1 ENDIF FOR I = 3 TO N IF A(I) < A(MIN) THEN MIN2 = MIN MIN = I ELSE IF A(I) < A(MIN2) THEN MIN2 = I ENDIF ENDIF NEXT I PRINT MIN, MIN2
На языке СИ На алгоритмическом языке
min=0; min2=l; if(a[min]>a[min2]) { min=l; min2=0; } for(i=3 ; i<N ; i++) if (a [i]<a[min]) { min2=min; min=i; }' else if(a[i]<a[min2]) min2=i; printf("%d, %d",min,min2); MIN := 1 MIN2 := 2 если a[MIN] < a[MIN2] TO MIN := 2 MIN2 := 1 все нц для i от 3 до N если a[i]<a[MIN] ТО MIN2 := MIN MIN : = i иначе если a[i]<a[MIN2] TO MIN2 : = i все все кц вывод MIN, MIN2
На естественном языке
Записываем в переменную MIN начальное значение, равное единице, а в переменную MIN2 началь- ное значение, равное двум. Если значение второго элемента массива меньше, чем значение первого элемента массива, то в пере- менную MIN записываем число 2, а в переменную MIN2 записываем число 1. В цикле перебираем все элементы с 3-го до 40-го. Если значение текущего элемента оказывается мень- ше значения элемента массива с номером MIN, то в переменную MIN2 записываем значение перемен- ной MIN, а в переменную MIN записываем номер текущего элемента массива. Иначе, если значение текущего элемента массива оказывается меньше значения элемента массива с номером MIN2, то в переменную MIN2 записываем номер текущего элемента массива. После окончания цикла выводим значение переменных MIN и MIN2.
26
Содержание верного ответа и указания к оцениванию (допускаются иные формулировки
ответа, не искажающие его смысла)
1а. При S=13...25. Во всех этих случаях Петя должен увеличить количество камней в куче
в два раза и выиграть. При значениях S<13 невозможно одним ходом (+1, +3 или *2) получить
26 или больше камней.
16. При S=12. Куда бы ни пошёл Петя (12+1=13, 12+3=15 или 12*2=24), Ваня удвоит чис-
ло камней в куче и выиграет (13*2=26,15*2=30 или 24*2=48).
2. S=9 или S=ll или S=6 (достаточно указать два значения из трех. Например, S=9 или
S=ll). В обоих случаях Петя должен получить в кучке 12 камней (9+3=12,11+1=12). При лю-
бом ответном ходе Вани (12+1=13, 12+3=15 или 12*2=24), Петя должен удвоить число камней
в куче и выиграть (13*2=26, 15*2=30 или 24*2=48).
3. S=8 (также верный ответ S=10). Если Петя добавит в кучу 1 или 3 камня (8+1=9 или
8+3=11), Ваня должен получить в куче 12 камней (9+3=12, 11+1=12) и в ответ на любой ход
Пети (12+1=13, 12+3=15 или 12*2=24), Ваня должен удвоить число камней в куче и выиграть
(13*2=26, 15*2=30 или 24*2=48). Если Петя удвоит число камней в куче (8*2=16), Ваня также
должен удвоить число камней в куче и выиграть (16*2=32).
Рассмотрим дерево игры:
Дерево всех партий, возможных при Ваниной стратегии. Знаком «>>» обозначены пози-
ции, в которых партия заканчивается.
27
var
ch : char;
s, q : string;
flag : boolean;
i, len : integer;
begin
// признак середины слова
flag:=false;
// слово максимальной длины
s : = ' ' ;
// текущее слово
q : = ' ' ;
// считали первый символ
read(ch);
while ch О do
begin
if ch <> ' 1 then // если текущий символ - не пробел
begin
q := q + ch; // добавить текущую букву к слову
flag := true // запомним, что рассматриваем слово
end
else // текущий символ - пробел
if flag then // если слово только что закончилось
begin
flag: =false;
// сравним длину текущего слова с длиной максимального слова
if length(q) > length(s) then
s := q; // если текущее — длиннее, будем его считать максимальным
q := ’’ // сбросим текущее слово в значение "пусто"
end;
read(ch) // считываем очередной символ
end;
// может оказаться, что последнее слово только что закончилось,
// а мы не успели сравнить его с максимумом. Сделаем это
if length(q) > length(s) then
writein(q)
else
writein (s)
end.
Вариант 6
24
Содержание верного ответа и указания по оцениванию (допускаются иные формулировки ответа, не искажающие его смысла) Баллы
Элементы ответа: 1)0 2)0000 (или любая последовательность четырёх целых чисел, в которой есть хотя бы один ноль, а другие числа отрицательные) 3) (Исправление программы на языке Паскаль) В строке «max := 0;» должно быть «max := -1001» (или любое число <=1000). В строке «а : = max» должно быть «max := а».
Указания по оцениванию
Обратите внимание! В задаче требовалось выполнить четыре действия: 1. Указать, что выведет программа для указанных входных данных. 2. Привести пример входных данных, при которых программа работает верно. 3. Исправить одну ошибку в программе. 4. Исправить вторую ошибку в программе.
Правильно выполнены все пункты задания. Ошибки исправлены верно. В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора решения. Ни одна правильная строка не указана в качестве неправильной. 3
Правильно выполнены три действия из четырёх. Верное указание на ошибку при неверном исправлении при этом не засчитывается. Не более одной верной строки указано как неправильная. 2
Правильно выполнено два действия из четырёх. Не более одной верной строки указано в качестве неверной. 1
Правильно выполнено менее двух действий. 0
Максимальный балл 3
25
На языке Паскаль На языке Бейсик
max := -20001; for i:=1 to N-l do if ( (a [i]+a[i + 1]) mod 3 <> 0) and (a[i]+a[i+l] > max) then max : = a[i]+a[i+l]; writein(max) МАХ = -20001 FOR I = 1 ТО N-1 IF ((A(I)+A(I+1)) MOD 3 О 0) AND (A(I)+A(I+1) > MAX) THEN MAX = A(I)+A(I+1) ENDIF NEXT I PRINT MAX
На языке СИ На алгоритмическом языке
max = -20001; for(i=0 ; i<N-l ; i++) if( (a[i]+a[i+l])%3 != 0 && a[i]+a[i+1] > max ) max = a[i]+a [i+1]; printf("%d",max); max := -20001 нц для i от 1 до N-l если mod(a[i]+а[i+1],3)<>0 и a[i]+a[i+l] > max то max := a[i]+a[i+l] все кц вывод max все
На естественном языке
Записываем в переменную МАХ начальное значение, равное -20001. В цикле перебираем все элементы с 1-го до 39-го. Если текущий элемент массива плюс следующий элемент массива даёт остаток от деления на 3 не равный нулю И больше МАХ, тогда кладём значение этой сумму (текущий элемент плюс следующий элемент) в переменную МАХ. После окончания цикла выводим на экран значение переменной МАХ.
26
Содержание верного ответа и указания к оцениванию (допускаются иные формулировки ответа,
не искажающие его смысла)
1а. При S=15...28. Во всех этих случаях Петя должен увеличить количество камней в куче в два раза
и выиграть. При значениях S<15 невозможно одним ходом (+1, +2 или *2) получить 29 или больше
камней.
16. При S=14. Куда бы ни пошёл Петя (14+1=15, 14+2=16 или 14*2=28), Ваня удвоит число камней
в куче и выиграет (15*2=30, 16*2=32 или 28*2=56).
2. S=7, S=12 или 8=13. Во всех случаях Петя должен получить в кучке 14 камней (7*2=14,12+2=14,
13+1=14). При любом ответном ходе Вани (14+1=15, 14+2=16 или 14*2=28), Петя должен удвоить чис-
ло камней в куче и выиграть (15*2=30, 16*2=32 или 28*2=56).
3. 8—11. Если Петя добавит в кучу 1 или 2 камня (11+1=12 или 11+2=13), Ваня должен получить в
куче 14 камней (12+2=14, 13+1=14) и в ответ на любой ход Пети (14+1=15, 14+2=16 или 14*2=28), Ваня
должен удвоить число камней в куче и выиграть (15*2=30, 16*2=32 или 28*2=56). Если Петя удвоит чис-
ло камней в куче (11*2=22), Ваня также должен удвоить число камней в куче и выиграть (22*2=44).
Рассмотрим дерево игры:
Дерево всех партий, возможных при Ваниной стратегии. Знаком «>>» обозначены позиции, в кото-
рых партия заканчивается.
var S,Smax,Smax2:string[52];
ch:char;
i, N,sh,ball,max,nmax,max2,nmax2:integer;
begin
max:=-l; Smax:=''; nmax:=0;
max2:=-l;
readln(N); {считали количество строк}
for i:=l to N do {перебираем все входные строки}
begin
s : =' ' ;
repeat
read(ch);
s:=s+ch
until ch=' ';{считана фамилия и запомнена в переменной s}
repeat
read(ch);
s: =s+ch
until ch=' ';{считано имя и добавлена к переменной s}
readln(sh,ball); {считали номер школы и балл ученика}
if sh=50 then {обрабатываем только учеников 50-й школы}
if ball>max then {текущий балл - лучший}
begin
max2:=max; Smax2:=Smax; nmax2:=nmax;
max :=ball; Smax :=s; nmax :=1
end
else
if ball=max then {текущий балл - такой же, как лучший}
begin
nmax:=nmax+1;
max2:=max; Smax2:=S
end
else
if ball>max2 then {текущий балл - лучше второго}
begin
max2:=ball; Smax2:=S;
nmax2:=1
end
else
if ball=max2 then {текущий балл такой же, как второй}
nmax2:=nmax2+l
end;
if (nmax=2) or (nmax=l) and (nmax2=l) then {два лучших ученика}
begin
writein(Smax);
writein(Smax2)
end
else
if (nmax=l) and (nmax2>l) then {один лучший ученик}
writein(Smax)
else
writein(nmax) {лучших учеников больше двух}
end.
Вариант 7
24
Содержание верного ответа и указания по оцениванию (допускаются иные формулировки ответа, не искажающие его смысла) Баллы
Элементы ответа: 1)-4. 2) 1 2 3 4 (или любая последовательность четырёх целых чисел, в которой все элементы неотрицательны). 3) (Исправление программы на языке Паскаль.) В строке «if а < 0 then» должно быть «if (а < 0) and (num = 0) then». В строке «num := а» должно быть «num := i».
Указания по оцениванию
Обратите внимание! В задаче требовалось выполнить четыре действия: 1. Указать, что выведет программа для указанных входных данных. 2. Привести пример входных данных, при которых программа работает верно. 3. Исправить одну ошибку в программе. 4. Исправить вторую ошибку в программе.
Правильно выполнены все пункты задания. Ошибки исправлены верно. В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не ис- кажающих замысла автора решения. Ни одна правильная строка не указана в качестве неправиль- ной. 3
Правильно выполнены три действия из четырёх. Верное указание на ошибку при неверном исправ- лении при этом не засчитывается. Не более одной верной строки указано как неправильная. 2
Правильно выполнено два действия из четырёх. Не более одной верной строки указано в качестве неверной. 1
Правильно выполнено менее двух действий. 0
Максимальный балл 3
25
На языке Паскаль На языке Бейсик
min := 20001; for i:=l to N div 2 do if a [2*i-l]+a[2*i] < min then min := a[2*i-l]+a [2*i]; writein(min) MIN = 20001 FOR I = 1 ТО N \ 2 IF А(2*1-1)+А (2*1) < MIN THEN MIN := A(2*1-1)+A(2*1) ENDIF NEXT I PRINT MIN
На языке СИ На алгоритмическом языке
min = 20001; for(i=0 ; i<N/2 ; i++) if( a[2*i]*a[2*i+l] < min ) min = a[2*i]*a[2*i+l]; printf("%d",min); min := 20001 нц для i от 1 до div(N,2) если a[2*i-l]*а[2*i] < min ТО min := a [2*i-l]*а[2*i] все кц вывод min все
На естественном языке
Записываем в переменную MIN начальное значение, равное 20001. В цикле перебираем номера пар элементов с 1-го до 20-го. Вычисляем номера элементов в паре как удвоенное зна- чение номера пары и удвоенное значение номера пары минус 1. Сумму значений элементов с такими номерами сравниваем со значением переменной MIN. Если эта сумма оказывается меньше, записываем её в переменную MIN. После окончания цикла выводим на экран значение переменной MIN.
26
Содержание верного ответа и указания к оцениванию (допускаются иные формулировки ответа,
не искажающие его смысла)
1. Для обеих позиций (7,25) и (9,24) выигрышную стратегию имеет Ваня. Он выигрывает первым же
ходом независимо от хода Пети. Для этого ему необходимо удвоить количество камней во второй куче.
Обоснование:
Из позиции (7,25) Петя может получить позиции (8,25), (14,25), (7,26) и (7,50). Во всех случаях
сумма камней в кучах меньше 58. Однако при ходе Вани (удвоение второй кучи) сумма становится не
менее 58.
Из позиции (9,24) Петя может получить позиции (10,24), (18,24), (9,25) и (9,48). Во всех случаях
сумма камней в кучах меньше 58. Однако при ходе Вани (удвоение второй кучи) сумма становится не
менее 58.
2. Для всех трёх позиций (6,25), (8,24) и (9,23) выигрышную стратегию имеет Петя.
Из позиции (6,25) Петя может добавить 1 камень в первую кучу и получить (7,25).
Айз позиций (8,24) и (9,23) Петя может получить позицию (9,24) добавив камень во вторую (8+1,24)
или первую (9,23+1) кучу соответственно.
Для полученных позиций (7,25) и (9,24) в пункте 1 доказано, что они проигрышные. Как бы ни по-
ходил Ваня, Петя удвоит количество камней во второй куче и выиграет.
3. В позиции (8,23) выигрышную стратегию имеет Ваня.
Если Петя первым ходом добавит 1 камень в какую-нибудь кучу, получится позиция (9,23) или
(8,24). В пункте 2 доказано, что эти позиции выигрышные. Петя должен добавить 1 камень в другую
кучу (9,23+1) или (8+1,24) соответственно и в ответ на любой ответный ход Вани удвоить число камней
во второй куче.
Если же Петя первым ходом удвоит число камней в какой-нибудь куче (получится (16,23) или (8,46)),
Ваня своим первым ходом удвоит число камней во второй куче и выиграет.
Рассмотрим дерево игры:
^П. <4+4(9> 25) ь. (9> 50)>>
В'48*2
^*(9,48) — (9,96)»
,46)»
(10,24) В:24*2»(10,48)»
(18’24) В:24--^18 > 48)»
. л(9,23) В:23+1>(9,24)
Л/
(8,23)<^8*2»(16,23) В1?3*2»(16
(8,46) В:4б*2»(8,92)»
48,24) В:9+1 (9,24)
Дерево всех партий, возможных при Ваниной стратегии. Знаком «>>» обозначены позиции, в кото-
рых партия заканчивается.
27
var s,k:array[1..99] of integer;
ch:char;
i,N,sh,ball,avg,m:integer;
begin
for i:=l to 99 do {обнуляем массивы}
begin
s[i]:=0;
k[i]:=0
end;
readln(N); {считали количество строк)
for i:=l to N do {перебираем все входные строки}
begin
repeat
read(ch)
until ch=’ {считана фамилия}
repeat
read(ch)
until ch=' '/{считано имя}
readln(sh,ball); {считали номер школы и балл ученика}
s[sh]:=s[sh]+ball; {считаем сумму баллов по школе}
k[sh]:=к[sh]+1 {считаем количество учеников из школы}
end;
avg:=0;
for i:=l to 99 do
if k[i]>0 then
begin
avg:=avg+s[i]; {считаем сумму баллов по району}
s[i]:=s[i] div k[i]; {считаем средний балл по каждой школе]
end;
avg:=avg div N; {считаем средний балл по району}
т:=0;
for i:=l to 99 do
if s[i]>avg then {отбираем школы, где средний балл выше районного}
begin
m:=m+l; {-подсчитываем количество таких школ}
ball:=s[i]; {запоминаем средний балл какой-нибудь из них}
write(i,' ')
end;
writein;
if m=l then
writein('Средний балл = ',ball)
end.
Вариант 8
24
Содержание верного ответа и указания по оцениванию (допускаются иные формулировки ответа, не искажающие его смысла) Баллы
Элементы ответа: 1)
Область Условие 1 (У<=х) Условие 2 (у<= -х) Условие 3 (у>=х*х-2) Программа выведет Область обрабатывается верно
А нет — — — нет
В нет — — — нет
С нет — — — нет
D нет — — — нет
Е да нет — — нет
F да да нет не принадлежит да
G Да да да принадлежит да
Н нет — — — нет
I да нет — — нет
2) Возможная доработка (Паскаль): if (х<=0) and (у>=х*х-2) and (у<=-х) or (х>=0) and (у>=х*х-2) and (у<=х) then write('принадлежит') else write('не принадлежит') Возможны и другие способы доработки. Пример-. if (у>=х*х-2) and ((у<=-х) or (у<=х)) then write('принадлежит') else write ('не принадлежит')
Указания по оцениванию
Обратите внимание! В задаче требовалось выполнить три действия: указать для каждой области, как будет работать программа, что она выведет на экран и правильно ли это (в виде таблицы), и исправить две ошибки. Баллы за данное задание начисляются как сумма баллов за верное выполнение каждого действия. 1. Верное заполнение предложенной таблицы. 2. Исправление неправильного использования условного оператора, в результате чего при невыполнении первого или второго условия программа не выдавала ничего (отсутствуют случаи ELSE). Исправлением этой ошибки может быть либо добавление случая ELSE к каждому условию IF, либо объединение всех условий IF в одно при помощи конъюнкции. В сложных случаях это действие считается выполненным, если программа выдаёт одно из двух сообщений «принадлежит» или «не принадлежит» для любых чисел х и у, при этом программа не стала работать хуже, чем раньше, то есть для всех точек, для которых программа ранее выдавала верный ответ, доработанная программа также должна выдавать верный ответ. 3. Исправление ошибки, из-за которой приведённым трём ограничениям не удовлетворяют точки плоскости, у которых у>= х2-2 и у>х и у<= -х (область Н), а также те, у которых у>= х2-2 и у>-х и у<=х (область I). Исправлением этой ошибки может быть разбиение области на две части и использование дизъюнкции либо отбрасывание от большей области её части. В сложных случаях это действие считается выполненным, если верно определена закрашенная область, т. е. программа выводит сообщение «принадлежит» для всех точек закрашенной области и только для них, для точек вне закрашенной области программа выводит «не принадлежит» или не выводит ничего.
Правильно выполнены оба пункта задания. Исправлены две ошибки. Программа для всех пар чисел (х, у) верно определяет принадлежность точки закрашенной области. В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора решения. 3
1. Правильно выполнены два действия из трёх (исправлены обе ошибки, но в первом пункте задания не приведена таблица (либо таблица содержит ошибки хотя бы в одной строке), либо приведена таблица (которая содержит ошибки не более чем в одной строке), но исправлена только одна ошибка программы). При написании операций сравнения допускается одно неправильное использование строгих/нестрогих неравенств (считается несущественной ошибкой, погрешностью записи). Например, вместо *у>= -х» используется «у>-х». 2. Или выполнены все три действия, но при этом в логическом выражении неверно учтены приоритеты логических операций (не расставлены или неправильно расставлены скобки в выражениях). 2
Правильно выполнено только одно действие из трёх, т. е., либо только приведена таблица, которая содержит ошибки в не более чем двух строках, либо таблица не приведена (или приведена и содержит ошибки более чем в двух строках), но исправлена одна ошибка программы. При оценивании этого задания на 1 балл допускается не учитывать корректность работы программ на точках границ областей (вместо нестрогих неравенств в решении были использованы строгие неравенства или наоборот). 1
Все пункты задания выполнены неверно (таблица анализа правильности алгоритма не приведена, либо содержит ошибки более чем в двух строках, программа не приведена, либо ни одна из двух ошибок не исправлена). 0
Максимальный балл 3
25
На языке Паскаль На языке Бейсик
Р := 1; for i:=l to N do if (a [i] mod 2 <> 0) and (a[i] > 0) then p : = p * a [ i ] ; writein(p) Р = 1 FOR I = 1 ТО N IF A(I) MOD 2 О 0 AND А(1> > 0 THEN Р := Р * А(1) ENDIF NEXT I PRINT P
На языке СИ На алгоритмическом языке
p = i; for(i=0 ; i<N ; i++) if ( a[i] % 2 ! = 0 && a[i] > 0 ) P *= a[i]; printf("%d",p); p := 1 нц для i от 1 до N если mod(a[i],2) о 0 и a[i] > 0 ТО Р := Р * a[i] все кц вывод р все
На естественном языке
Записываем в переменную Р начальное значение, равное 1. В цикле перебираем все элементы с 1-го до 40-го. Если значение текущего элемента массива положительно и оста- ток от деления его на 2 не равен нулю, умножаем текущее значение переменной Р на текущий элемент массива и кладём результат в переменную Р. После окончания цикла выводим на экран значение переменной Р.
26
Содержание верного ответа и указания к оцениванию (допускаются иные формулировки ответа,
не искажающие его смысла)
la) S=13...25. Петя должен удвоить число камней во второй куче.
16) 0 (нет таких S). Единственный подходящий вариант (S=12) не подходит, т. к. при первом ходе
Пети «+1 к первой куче» получается ситуация (5,12), из которой нельзя выиграть одним ходом. Числа,
меньшие 12, тоже не подходят (при 8=11 добавление 1 камня во вторую кучу приводит к (4, 12), из кото-
рой не выиграть). Аналогично, можно такое показать для каждого меньшего S.
2) S=12. Первым ходом Петя должен добавить 1 камень в первую кучу (получится (5,12)). При лю-
бом ответном ходе Вани Петя должен удвоить вторую кучу и выиграть.
3)S=11.
(Здесь рисовать дерево ВСЕХ ходов Пети и ответных ходов Вани. На каждом ребре писать наподобие
«П:5+1» (это значит, что Петя добавляет 1 камень в кучку, в которой 5 камней)).
Смысл дерева:
Если Петя добавит 1 камень в какую-нибудь кучку, Ваня должен добавить 1 камень в другую кучку.
Получится ситуация (5,12). При любом ответном ходе Пети Ваня должен удвоить вторую кучу и выиграть.
Если Петя удвоит какую-нибудь кучку, Ваня должен удвоить вторую кучу и выиграть.
В дереве написать «>>» после каждой финальной выигрышной ситуации.
Под деревом написать:
В дереве рассмотрены все возможные ходы Пети и ответные ходы Вани, соответствующие выигрыш-
ной стратегии. Знаком «>>» обозначены позиции, в которых партия заканчивается.
27
var nmax,max:array[1..99] of integer;
ch:char;
i,N,sh,ball,k:integer;
begin
for i:=l to 99 do {обнуляем массивы)
begin
nmaxfi]:=0/
max[i]:=-1
end;
readln(N); {считали количество строк}
for i:=l to N do {перебираем все входные строки}
begin
repeat
read(ch)
until ch=' '/{считана фамилия}
repeat
read(ch)
until ch=' '/{считано имя}
readln(sh,ball)/ {считали номер школы и балл ученика}
if ball>max[sh] then {сравниваем текущий балл с лучшим баллом по школе}
begin
max[sh]:=Ьа11/ {меняем лучший балл по школе}
nmax[sh]:=l {число людей в школе с таким баллом устанавливаем =1}
end
else
if ball=max[sh] then {в школе есть еще такой лучший балл}
nmax[sh]:=nmax[sh]+1/ {увеличиваем число людей в школе}
{с таким баллом}
end/
к: =0 /
for i:=l to 99 do
if nmax[i]>2 then {отбираем только школы, у которых лучший балл}
begin {набрало более 2-х учеников}
к:=к+1/ {считаем количество таких школ}
ball:=max[i]; {запоминаем балл в какой-нибудь из них}
write (i,' ') {выводим номер такой школы}
end/
if k=0 then
writein('Нет таких школ')
else
begin
writein/
if k=l then
writein('Наибольший балл = ’,ball)
end
end.
Вариант 9
24
Содержание верного ответа и указания по оцениванию (допускаются иные формулировки ответа, не искажающие его смысла) Баллы
Элементы ответа: 1.
Область Условие 1 (х<=11) Условие 2 (х>= -1) Условие 3 (х<7) Программа выведет Область обрабатывается верно
А Да нет — — нет
В Да да да принадлежит да
С да да да принадлежит нет
D да да нет не принадлежит нет
Е нет — — — нет
2. Возможная доработка (Паскаль): if (х>=-1) and (х<=3) or (х>=7) and (х<=11) then write('принадлежит') else write('не принадлежит') Возможны и другие способы доработки. Например: if х>=-1 then if х<=3 then write ('принадлежит') else if- x>=7 then if x<=ll then write('принадлежит’) else write('не принадлежит’) else write(’не принадлежит') else write('не принадлежит')
Указания по оцениванию
Обратите внимание! В задаче требуется выполнить три действия. 1. Заполнить таблицу. 2. Исправить ошибку в условном операторе. 3. Исправить ошибку, связанную с неправильным набором условий. Баллы за данное задание начисляются как сумма баллов за верное выполнение каждого действия. Рассмотрим отдельно каждое действие. 1. Действие по заполнению таблицы считается выполненным, если в таблице нет ошибок или ошибки присутству- ют только в одной строке. 2. Неправильное использование условного оператора, в результате чего при невыполнении первого или второго ус- ловия программа не выдавала ничего (отсутствуют случаи ELSE). Исправлением этой ошибки может быть либо до- бавление случая ELSE к каждому условию IF, либо объединение всех условий IF в одно при помощи конъюнкции. В сложных случаях это действие считается выполненным, если программа выдаёт одно из двух сообщений: «при- надлежит» или «не принадлежит» - для любых чисел х, при этом программа не стала работать хуже, чем раньше, т. е. для всех точек, для которых программа ранее выдавала верный ответ, доработанная программа также должна выдавать верный ответ. 3. Приведённых трёх ограничений недостаточно для описания двух областей (потеряно условие х<=3). Кроме того, необходимо учесть, что области не соединены. Исправлением этой ошибки может быть разбиение области на две части и использование дизъюнкции, либо использование сложной комбинации каскадных условий. В сложных случаях это действие считается выполненным, если верно определены заштрихованные области, т. е. программа выводит сообщение «принадлежит» для всех точек закрашенных областей, и только для них, для точек вне заштрихованных областей программа выводит «не принадлежит» или не выводит ничего. В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не искажающих за- мысла автора решения.
Выполнены все три действия. 3
Правильно выполнены два действия из трёх (исправлены обе ошибки, но в пункте 1 задания не приве- дена таблица (либо таблица содержит ошибки в двух и более строках), либо приведена таблица (которая содержит ошибки не более чем в одной строке), но исправлена только одна ошибка программы). При написании операций сравнения допускается одно неправильное использование строгих/нестрогих неравенств (считается несущественной ошибкой, погрешностью записи). Например, вместо «х<=3» ис- пользуется «х<3». 2
Правильно выполнено только одно действие из трёх, т. е. либо только приведена таблица, которая содер- жит ошибки в не более чем одной строке, либо таблица не приведена (или приведена и содержит ошиб- ки более чем в одной строке), но исправлена одна ошибка программы. При оценивании этого задания на 1 балл допускается не учитывать корректность работы программ на точках границ областей (вместо нестрогих неравенств в решении были использованы строгие неравенства или наоборот). 1
Все пункты задания выполнены неверно (таблица анализа правильности алгоритма не приведена либо содержит ошибки в двух и более строках, программа не приведена либо ни одна из двух ошибок не ис- правлена). 0
Максимальный балл 3
25
На языке Паскаль На языке Бейсик
к := 0; for i:=l to N do if (a[i] > 0) and (a[ij mod 2=0) then к := к + 1; if к = n then writein('YES') else writein(’NO') К = 0 FOR I = 1 ТО N IF А(1) <= 0 OR A(I) MOD 2 О 0 THEN К = К + 1 ENDIF NEXT I IF К = 0 THEN PRINT "YES" ELSE PRINT "NO" ENDIF
На языке СИ На алгоритмическом языке
к = 0; for(i=0 ; i<N ; i++) if(a[i] > 0 && a[i] % 2 == 0) k++; if(k == n) printf("YES"); else printf("NO"); k := 0 нц для i от 1 до N если a[i] > 0 и mod(a[i],2)=0 то k := k + 1 все кц если k=n то вывод ’YES’ иначе вывод 'NO1 все все
На естественном языке
Записываем в переменную К начальное значение, равное нулю. В цикле перебираем все элементы с 1-го до 40-го. Если значение текущего элемента массива больше нуля, и при этом его остаток от деления на 2 равен нулю, увеличиваем значение переменной К на 1. После окончания цикла: если значение переменной К равно 40, выводим на экран «YES», иначе выводи на экран «NO».
26
Содержание верного ответа и указания к оцениванию (допускаются иные формулировки ответа,
не искажающие его смысла)
1. Для обеих позиций (6,25) и (8,24) выигрышную стратегию имеет Ваня. Он выигрывает первым же
ходом независимо от хода Пети. Для этого ему необходимо удвоить количество камней во второй куче.
Обоснование:
Из позиции (6,25) Петя может получить позиции (7,25), (12,25), (6,26) и (6,50). Во всех случаях
сумма камней в кучах меньше 57. Однако при ходе Вани (удвоение второй кучи) сумма становится не
менее 57.
Из позиции (8,24) Петя может получить позиции (9,24), (16,24), (8,25) и (8,48). Во всех случаях
сумма камней в кучах меньше 57. Однако при ходе Вани (удвоение второй кучи) сумма становится не
менее 57.
2. Для всех трёх позиций (6,24), (8,23) и (7,24) выигрышную стратегию имеет Петя.
Из позиции (6,24) Петя может добавить 1 камень во вторую кучу и получить (6,25).
А из позиций (8,23) и (7,24) Петя может получить позицию (8,24) добавив камень во вторую (8,23+1)
или первую (7+1,24) кучу соответственно.
Для полученных позиций (6,25) и (8,24) в пункте 1 доказано, что они проигрышные. Как бы ни по-
ходил Ваня, Петя удвоит количество камней во второй куче и выиграет.
3. В позиции (7,23) выигрышную стратегию имеет Ваня.
Если Петя первым ходом добавит 1 камень в какую-нибудь кучу, получится позиция (8,23) или
(7,24). В пункте 2 доказано, что эти позиции выигрышные. Петя должен добавить 1 камень в другую
кучу (8,23+1) или (7+1,24) соответственно и в ответ на любой ответный ход Вани удвоить число камней
во второй куче.
Если же Петя первым ходом удвоит число камней в какой-нибудь куче (получится (14,23) или (7,46)),
Ваня своим первым ходом удвоит число камней во второй куче и выиграет.
Рассмотрим дерево игры:
Дерево всех партий, возможных при Ваниной стратегии. Знаком «>>» обозначены позиции, в кото-
рых партия заканчивается.
27
var k:array[0..100] of integer; {число учеников, набравших такой балл}
ch:char ;
i, N,sh,ball,num,s:integer;
begin
for i:=0 to 100 do {обнуляем массив}
k[i]:=0;
readln(N); {считали количество строк}
for i:=l to N do {перебираем все входные строки}
begin
repeat
read(ch)
until ch=' ';{считана фамилия}
repeat
read(ch)
until ch=* ';{считано имя}
readln(sh,ball); {считали номер школы и балл ученика}
k[ball]:=к[ball]+1 (считаем количество учеников, набравших такой балл}
end;
s :=0;
for i:=0 to 40 do
s:=s+k[i]; {вычисляем число учеников, получивших '2'}
num:=(N-s)*30 div 100; {вычисляем 30% от учеников, получивших не '2'}
s:=0;
i:=40;
while (s<num) and (i<60) do {ищем границу оценки '3'}
begin
i:=i+l;
s:=s+k[i]
end;
if s=num then {оценку '3' можно поставить ровно 30% участников,}
{не получивших оценку '2'}
writein (i,' ',s)
else
if (i=60) and (s<num) then {остальные набрали больше 60 баллов}
writein('60 ',s)
else {'троечников' оказалось больше 30%}
if s=k[i] then {все 'троечники' набрали одинаковый балл}
writein (i, ' ',s)
else
begin
s:= s-k[ i ];
i:=i-l; {ищем предыдущий балл}
while k[i]=0 do
i:=i-l;
writein(i,' ',s)
end
end.
Вариант 10
24_______________________________________________________________________
Содержание верного ответа и указания по оцениванию
(допускаются иные формулировки ответа, не искажающие его смысла)
Элементы ответа:
1.
Об- ласть Условие 1 (х>1) Условие 2 (х>=7) Условие 3 (х<=13) Программа выведет Область обрабатывается верно
А нет — — — нет
В нет — — — нет
С да нет — — нет
D да да да принадлежит да
Е Да Да нет не принадлежит да
2. Возможная доработка (Паскаль):
if (х>=-5) and (х<=1) or (х>=7) and (х<=13) then
write('принадлежит')
else
write('не принадлежит')
Возможны и другие способы доработки.
Например:
if х>=-5 then
if х<=1 then
write(1 принадлежит')
else
if x>=7 then
if x<=13 then
write(’принадлежит')
else
write('не принадлежит')
else
write('не принадлежит')
else
write('не принадлежит')__________________________________
_____________________________________Указания по оцениванию
Обратите внимание! В задаче требуется выполнить три действия.
1. Заполнить таблицу.
2. Исправить ошибку в условном операторе.
3. Исправить ошибку, связанную с неправильным набором условий.
Баллы за данное задание начисляются как сумма баллов за верное выполнение каждого действия. Рассмотрим отдельно каждое действие. 1. Действие по заполнению таблицы считается выполненным, если в таблице нет ошибок или ошибки присутствуют только в одной строке. 2. Неправильное использование условного оператора, в результате чего при невыполнении первого или второго условия программа не выдавала ничего (отсутствуют случаи ELSE). Исправлением этой ошибки может быть либо добавление случая ELSE к каждому условию IF, либо объединение всех условий IF в одно при помощи конъюнкции. В сложных случаях это действие считается выполненным, если программа выдает одно из двух сообщений: «принадлежит» или «не принадлежит» — для любых чисел х, при этом программа не стала работать хуже, чем раньше, т. е. для всех точек, для которых программа ранее выдавала верный ответ, доработанная программа также должна выдавать верный ответ. 3. Приведённых трёх ограничений недостаточно для описания двух областей (потеряно условие х >= -5). Кроме того, необходимо учесть, что области не соединены. Исправлением этой ошибки может быть разбиение области на две части и использование дизъюнкции, либо использование сложной комбинации каскадных условий. В сложных случаях это действие считается выполненным, если верно определены заштрихованные области, т. е. программа выводит сообщение «принадлежит» для всех точек закрашенных областей, и только для них, для точек вне заштрихованных областей программа выводит «не принадлежит» или не выводит ничего. В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора решения
Выполнены все три действия. 3
Правильно выполнены два действия из трёх (исправлены обе ошибки, но в пункте 1 задания не приве- дена таблица (либо таблица содержит ошибки в двух и более строках), либо приведена таблица (которая содержит ошибки не более чем в одной строке), но исправлена только одна ошибка программы). При написании операций сравнения допускается одно неправильное использование строгих/нестрогих неравенств (считается несущественной ошибкой, погрешностью записи). Например, вместо *х >= —5» используется «х > -5». 2
Правильно выполнено только одно действие из трёх, т. е. либо только приведена таблица, которая со- держит ошибки в не более чем одной строке, либо таблица не приведена (или приведена и содержит ошибки более чем в одной строке), но исправлена одна ошибка программы. При оценивании этого за- дания на 1 балл допускается не учитывать корректность работы программ на точках границ областей (вместо нестрогих неравенств в решении были использованы строгие неравенства или наоборот) 1
Все пункты задания выполнены неверно (таблица анализа правильности алгоритма не приведена либо содержит ошибки в двух и более строках, программа не приведена либо ни одна из двух ошибок не ис- правлена) 0
Максимальный балл 3
25
На языке Паскаль На языке Бейсик
к := 0; j : = 0; for i:=1 to N do if a[i] > 0 then к := к + 1 else if a[i] < 0 then j := j + 1; if к > j then writein(’+') else if к < j then writeln ('- ') else writeln('=') . К = 0 J = 0 FOR I = 1 TO N IF A(I) >0 THEN К = К + 1 ENDIF IF A(I) < 0 THEN J = J + 1 ENDIF NEXT I IF К = J THEN PRINT "=" ELSE • IF К < J THEN PRINT ELSE PRINT "+" ENDIF
На языке СИ На алгоритмическом языке
к = 0; j = 0; for(i=0 ; i<N ; i++) { if (a[i] > 0) k + + ; if (a[i] < 0) j++; } if (k > j) printf (" + "); else if(k < j) printf else printf("="); к := 0 j := 0 нц для i от 1 до N если а[i] >0 ТО к := к + 1 все если а[i] < 0 то j := j + 1 все КЦ если к = j то вывод ’’ = " иначе если к < j ТО вывод иначе вывод "+" все все все
На естественном языке
Записываем в переменные К и J начальные значения, равные нулю. В цикле перебираем все элементы с 1-го до 40-го. Если значение текущего элемента массива больше нуля, уве- личиваем значение переменной К на 1. Если значение текущего элемента массива меньше нуля, увеличиваем значение переменной J на 1. После окончания цикла: если значение переменной К равно значению переменной J, выводим на экран « = », иначе если значение переменной К больше значения переменной J, выводим на экран « + », иначе выводим на экран «-».
26
Содержание верного ответа (допускаются иные формулировки ответа, не искажающие его смысла)
Выигрывает Ваня. Для доказательства рассмотрим неполное дерево игры, оформленное в виде та-
блицы, где в каждой ячейке записаны пары чисел, разделенные запятой. Эти числа соответствуют коли-
честву камней на каждом этапе игры в первой и второй кучках соответственно.
Стартовая позиция I ход (Пети), все варианты хода II ход (Вани), выигрышные ходы III ход (Пети), все варианты хода IV ход (Вани), выигрышные ходы
4,3 12,3 36,3 Выигрыш Вани
6,3 6,9 18,9 54,9
8,9 8,27
6,27 Выигрыш Вани
6,11 6,33
4,9 6,9 Те же варианты III—IV ходов
4,6 12,6 36,6 Выигрыш Вани
14,6 42,6
12,18 36,18
12,8 36,8
Таблица содержит все возможные варианты ходов первого игрока (Пети). Из неё видно, что при лю-
бом ходе первого игрока у второго (Вани) имеется ход, приводящий к победе.
27
var
i,y,t,k,N : integer;
plus, // наибольший тоннаж одного прибывшего вагона за каждый год
minus : array [1980..2015] of real; // наименьший - убывшего
а : real;
ch : char;
begin
readln(N); // считываем количество входных строк
for у := 1980 to 2015 do // перебираем все года
plus[у] := 0; // обнуляем максимум прибывшего вагона
for i := 1 to N do // перебираем все входные строки
begin
read(ch,ch,ch); // избавляемся от первых трех символов в начале строки
readln(у,t,к); // считываем год, общий тоннаж и число вагонов
а := abs(t/k); // вычисляем средний тоннаж вагона за месяц
if к > 0 then // если это прибывшие вагоны
begin
if plus[у] < a then // если вычисленный тоннаж вагона больше
// хранимого максимума
plus[у] := а // меняем максимум
end
eJ.se // если это убывшие вагоны
begin
if minus[у] = 0 then // если за этот год это первый результат
minus[у] := а // запоминаем этот результат как начальное значение
else // если это .не первый результат
if minus[у] > a then // если вычисленный тоннаж вагона меньше
// хранимого минимума
minus[у] := а // меняем этот минимум
end
end;
for у := 1980 to 2015 do // перебираем все годы
if plus[у] > minus[у] then // если макс.прибывшего больше мин.убывшего
writein(у) // выводим этот год на экран
end.
Вариант 11
24
Содержание верного ответа и указания по оцениванию (допускаются иные формулировки ответа, не искажающие его смысла) Баллы
Элементы ответа: 1)NO. 2) 123 (или любое натуральное число, в котором есть цифра, большая 0 и меньшая 6, либо в котором нет цифр, меньших 6). 3) (Исправление программы на языке Паскаль.) В строке «т := 0;» должно быть «т := -1;», в строке «if ш > 0 then» должно быть «if m > -1 then».
Указания по оцениванию
Обратите внимание! В задаче требовалось выполнить четыре действия (правильно ответить на вопросы 1 и 2 и исправить две ошибки). То есть: 1. Верно указать, что именно выведет программа при указанных в условии входных данных. 2. Указать число, при котором программа работает верно. 3-4. Указать и верно исправить две ошибки: а. Указать и верно исправить ошибку инициализации (не обязательно с упоминанием этого термина). б. Указать и верно исправить ошибку проверки на отсутствие в числе цифр, меньших 6. Каждый из п. а) и б) считается выполненным, если: i) правильно указана строка с ошибкой; ii) указан такой новый вариант строки, что при исправлении другой ошибки получается правильная программа.
Правильно выполнены все пункты задания. Обе ошибки исправлены верно. Программа после исправ- лений для всех натуральных чисел N, не превосходящих 10®, верно определяет наибольшую цифру, меньшую 6. В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не иска- жающих замысла автора решения. 3
2 балла за эту задачу выставляется в случае, если нельзя выставить 3 балла, и при этом выполняется один из двух случаев: 1. Правильно выполнены три действия из четырёх. Верное указание на ошибку при неверном исправ- лении при этом не засчитывается. При этом ни одна верная строка не указана как ошибочная. 2. Правильно выполнены все четыре действия. Не более одной верной строки указано как ошибочные. 2
Правильно выполнено только два действия из четырёх. Не важно, сколько верных строк указаны как неверные. 1
Все пункты задания выполнены неверно или отсутствуют. 0
Максимальный балл 3
25
На языке Паскаль На языке Бейсик
i:=l; while (i<N) and (a[i]>=0) do i:=i+l; if a[i]>=0 then writein(’нет таких') else writein (i); 1 = 1 WHILE I<N AND A(I)>=0 1 = 1 + 1 ENDW IF A(I)>=0 THEN PRINT "нет таких" ELSE PRINT I ENDIF
На языке СИ На алгоритмическом языке
for(i=0 ; i<N && a[i]>=0 ; i++) if(a[i]>=0) printf("нет таких"); else printf("%d",i); i := 1 нц пока i<N и a[i]>=0 i := i+1 кц если a[i]>=0 то вывод 'нет таких* иначе вывод i все
На естественном языке
Записываем в переменную I начальное значение, равное 1. В цикле пока I меньше 50 и пока I-й элемент неотрицательный, увеличиваем переменную I на единицу. Если после окончания цикла элемент массива с номером I неотрицательный — выводим сообщение, что отрицательных элементов в массиве нет. Иначе, цикла выводим значение переменной I.
26
Содержание верного ответа и указания к оцениванию (допускаются иные формулировки ответа,
не искажающие его смысла)
la) S=16...3O. Петя должен увеличить количество камней в куче в 2 раза и выиграть. Для S<16 не-
возможно одним ходом (+1, +2 или *2) получить в куче 31 или больше камней.
16) S=15. Куда бы ни походил Петя (15+1=16,15+2=17 или 15*2=30), Петя должен увеличить коли-
чество камней в куче в 2 раза и выиграть (16*2=32,17*2=34, 30*2=60).
2. S=13 и S=14. Своим первым ходом Петя должен получить в куче 15 камней (13+2=15 или
14+1=15). При любом ответном ходе Вани (15+1=16, 15+2=17 или 15*2=30), Ваня должен увеличить
количество камней в куче в 2 раза и выиграть (16*2=32, 17*2=34, 30*2=60).
3. S=12. Если Петя удвоит количество камней в куче (12*2=24), Ваня тоже удвоит количество кам-
ней в куче и выиграет (24*2=48).
Если же Петя добавит в кучу 1 камень или 2 камня (12+1=13 или 12+2=14), Ваня должен довести
количество камней в куче до 15 (13+2=15 или 14+1=15). При любом ответном ходе Пети (15+1=16,
15+2=17 или 15*2=30), Ваня должен увеличить количество камней в куче в 2 раза и выиграть (16*2=32,
17*2=34, 30*2=60). Рассмотрим дерево игры:
13
В:*2 _
---*32»
В:*2
о -rz ----*34»
^^>15 _ В: *2
30----*60»
В * +1 *
—-—* 15(аналогично)
В:*2 „
---► 48»
В этом дереве в каждой позиции, где должен ходить Петя, разобраны все возможные ходы, а для по-
зиций, где должен ходить Ваня — только ход, соответствующий стратегии, которую выбрал Ваня.
27
var
i, a, N, res : integer;
max,max_2,тахЗ,max3_2,max5,max5_2 : integer;
begin
max := 0; // наибольший элемент, не кратный ни 3-м, ни 5-ти
max 2 := 0; // второй максимум, не кратный ни 3-м, ни 5-ти
тахЗ := 0; // наибольший элемент, кратный 3-м и не кратный 5-ти
тахЗ 2 := 0; // второй максимум, кратный 3-м и не кратный 5-ти
тах5 := 0; // наибольший элемент, кратный 5-ти и не кратный 3-м
тах5_2 := 0; // второй максимум, кратный 5-ти и не кратный 3-м
readln(N); // считываем N
for i := 1 to N do // перебираем все элементы последовательности
begin
readln(а); // считываем очередной элемент
// ищем максимум и второй максимум, не кратные 3-м и 5-ти
if (a mod 3 <> 0) and (a mod 5 о 0)- then
if а > max then
begin
max_2 := max; max := a
end
else
if a > max_2 then max_2 := a;
// ищем максимум и второй максимум, кратный 3-м и не кратный 5-ти
if (a mod 3=0) and (a mod 5 <> 0) then
if а > тахЗ then
begin
max3_2 := тахЗ; тахЗ := а
end
else
if а > тахЗ_2 then тахЗ_2 := а;
// ищем максимум и второй максимум, кратный 5-ти и не кратный 3-м
if (a mod 5=0) and (a mod 3 о 0) then
if а > max5 then
begin
max5_2 := max5; max5 := a
end
else
if a > max5_2 then max5_2 := a
end;
// Ищем максимальное произведение среди 5-ти вариантов
res := max * max_2;
if max * max5 > res then res := max * max5;
if max * тахЗ > res then res := max * тахЗ;
if тахЗ * max3_2 > res then res := тахЗ * max3_2;
if max5 * max5_2 > res then res := max5 * max5_2;
writein(res)
end.
Вариант 12
24
Содержание верного ответа и указания по оцениванию (допускаются иные формулировки ответа, не искажающие его смысла) Баллы
Элементы ответа: 1)2. 2) 5 (или любое однозначное число или число, в котором все цифры одинаковые). 3) (Исправление программы на языке Паскаль.) В строке «к : = 10;» должно быть «к : = 0; », встроке«11 N mod 10 < к then» должно быть «if N mod 10 > к then».
Указания по оцениванию
Обратите внимание! В задаче требовалось выполнить три действия. Баллы за данное задание начисляются как сумма баллов за верное выполнение каждого действия. 1. Верно указано, что именно выведет программа при указанных в условии входных данных. 2. Указано число, при котором программа работает верно 3. Указаны и верно исправлены две ошибки: а. Указана и верно исправлена ошибка инициализации (не обязательно с упоминанием этого термина). б. Указано на неверное условие выбора максимума, и оно исправлено на верное. Каждый из п. а) и б) считается выполненным, если: i) правильно указана строка с ошибкой; ii) указан такой новый вариант строки, что при исправлении второй ошибки получается правильная программа.
Правильно выполнены все пункты задания. Обе ошибки исправлены верно. Программа после исправ- лений для всех натуральных чисел N, не превосходящих 109, верно определяет наибольшую цифру. В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не иска- жающих замысла автора решения. 3
Правильно выполнены два действия из трех. Верное указание на ошибку при неверном исправлении при этом не засчитывается. Допустимо, чтобы в пункте 3 была исправлена только одна ошибка. 2
Правильно выполнено только одно действие из трёх, то есть, либо только выполнен пункт 1, либо пункт 2, либо верно исправлена хотя бы одна ошибка путем её явного указания и исправления или в новом тексте программы 1
Все пункты задания выполнены неверно или отсутствуют. 0
Максимальный балл 3
25
На языке Паскаль На языке Бейсик
j :=0; for i:=N downto 1 do if a[i]=x then j :=i; if j=0 then writein('нет таких’) else writein(j); Другой способ: i : =1; while (i<N) and (a[i]<>x) do i:=i+l; if a[i]Ox then writein('нет таких') else writein(i); 1 = 1 WHILE I<N AND A (I) OX 1 = 1 + 1 ENDW IF A(I)OX THEN PRINT "нет таких" ELSE PRINT I ENDIF
На языке СИ На алгоритмическом языке
for(i=0 ; i<N && a[i]!=x ; i++) if(a [i] !=x) printf("нет таких"); else printf("%d",i) ; i := 1 нц пока i<N и a[i]Ox i := i+1 КЦ если a[i]<>x TO вывод ’нет таких’ иначе вывод i все
На естественном языке
Записываем в переменную I начальное значение, равное 1. В цикле пока I меньше 30 и пока I-й элемент не равен X, увеличиваем переменную I на единицу. После окончания цикла: если элемент массива с номером I не равен X — выводим сообщение, что таких элементов в массиве нет. Иначе, выводим значение переменной I.
26
Содержание верного ответа и указания к оцениванию (допускаются иные формулировки ответа,
не искажающие его смысла)
1а. При S=11...3O. Во всех этих случаях Петя должен увеличить количество камней в куче в три раза
и выиграть. При значениях S<11 невозможно одним ходом (+1, +2 или *3) получить 31 или больше
камней.
16. При S=10. Куда бы ни пошел Петя (10+1=11, 10+2=12 или 10*3=30), Ваня утроит число камней
в куче и выиграет (11*3=33, 12*3=36 или 30*3=90).
2. S=8 или S=9. В обоих случаях Петя должен получить в кучке 10 камней (8+2=10, 9+1=10). При
любом ответном ходе Вани (10+1=11,10+2=12 или 10*3=30), Петя должен утроить число камнейвкуче
и выиграть (11*3=33, 12*3=36 или 30*3=90).
3. S=7. Если Петя добавит в кучу 1 или 2 камня (7+1=8 или 7+2=9), Ваня должен получить в куче
10 камней (8+2=10, 9+1=10) и в ответ на любой ход Пети (10+1=11, 10+2=12 или 10*3=30), Ваня дол-
жен утроить число камней в куче и выиграть (11*3=33,12*3=36 или 30*3=90). Если Петя утроит число
камней в куче (7*3=21), Ваня также должен утроить число камней в куче и выиграть (21*3=63).
Рассмотрим дерево игры:
ху11-^>33»
<^30-^*90»
И—33»
10 12 36»
21-^2^63» Х^30-^*90»
Дерево всех партий, возможных при Ваниной стратегии. Знаком «»» обозначены позиции, в ко-
торых партия заканчивается.
27
Решение задания А
var
i, j, minp, N : integer;
a : array [1..10000] of integer; // все элементы
begin
readln(N);
for i := 1 to N do
readln (a [i]);
minp := 1000*1000+1;
for i := 1 to n-6 do
for j := i+6 to n do
if (a[i] * a[j] mod 2=0) and
(a[i] * a[j] < minp) then
minp :=a[i]*a[j];
• writein(minp)
end.
Решение задания Б
var
I, j, x, minp, min, min2, N : integer;
a : array [1..6] of integer; // предыдущие введенные 6 элементов
begin
readln(N);
for i := 1 to 6 do
readln(a[i]); // запоминаем первые 5 элементов последовательности
// начальное значение минимального искомого произведения
minp := 1000*1000+1;
min := 1001; // начальное значение минимального элемента, отстоящего
//от текущего элемента на расстояние не меньше чем 6
min2 := 1001; // начальное значение минимального четного элемента,
// отстоящего от текущего на расстояние не меньше чем 6
for i := 7 to N do
begin
// проверим, не нужно ли сменить min (а[1] лучше?)
if а[1] < min then
min .:= а[1];
// проверим, не нужно ли сменить min2 (а[1] лучше?)
if (а[1] < min2) and (а[1] mod 2=0) then
min2 := a [1 ];
readln(x); // считываем очередной элемент
// проверим, не составляет ли текущий элемент лучшую пару, чем имеем
if х mod 2=0 then
begin
if x * min < minp then
minp := x * min
end
else
if x * min2 < minp then
minp := x * min2;
for j := 1 to 5 do // сдвигаем массив 6-ти последних элементов на 1
a[j] := a[j+l];
а[6] := х // текущий элемент запоминаем в его "хвосте"
end;
writeln(minp)
end.
Вариант 13
24
Содержание верного ответа и указания по оцениванию (допускаются иные формулировки ответа, не искажающие его смысла) Баллы
Элементы ответа: 1)16. 2) 5 4 0 (или любая последовательность натуральных чисел, начинающаяся с нечетного числа, содержащая четное положительное число и оканчивающаяся нулём). 3) (Исправление программы на языке Паскаль.) В строке «з : = 0; » должно быть ♦if a mod 2=0 then s :=а else s := 0;». Другой вариант исправления ошибки: Строку ♦read (а) ; » переставить на две строки ниже (перед строкой ♦end; ».
Указания по оцениванию
Обратите внимание! В задаче требовалось выполнить три действия. Баллы за данное задание начисляются как сумма баллов за верное выполнение каждого действия. 1. Верно указано, что именно выведет программа при указанных в условии входных данных. 2. Указаны входные данные, при которых программа работает верно. 3. Указана и верно исправлена ошибка, не проверяющая первое введённое число (но проверяющая последнее введённое число). Пункт 3 считается выполненным, если правильно указано, как именно нужно исправить ошибку.
Правильно выполнены все пункты задания. Ошибка исправлена верно. Программа после исправле- ний для всех последовательностей натуральных чисел, оканчивающихся нулём, верно определяет сумму чётных элементов последовательности. В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не ис- кажающих замысла автора решения. 3
Правильно выполнены два действия из трёх. Верное указание на ошибку при неверном исправлении при этом не засчитывается. 2
Правильно выполнено только одно действие из трёх, т. е., либо только выполнен пункт 1, либо пункт 2, либо верно исправлена ошибка путем её явного указания и исправления или в новом тексте программы 1
Все пункты задания выполнены неверно или отсутствуют. 0
Максимальный балл 3
25
На языке Паскаль На языке Бейсик
к:=0; for i:=l to N do if a[i]>0 then begin k:=k+l; if k=3 then j :=i; end; if k<3 then writein('нет такого') else writein (j); К = 0 FOR I = 1 ТО N IF А(I)>0 THEN К = К + 1 IF К = 3 THEN J = I ENDIF ENDIF NEXT I IF K<3 THEN PRINT "нет такого" ELSE PRINT J ENDIF
На языке СИ На алгоритмическом языке
k=0; for(i=0 ; i<N ; i++) if (a[i]>0) { k+ + ; if(k=3) j=i; ) if (k<3) printf("нет такого"); else printf("%d",j); k := 0 нц для i от 1 до N если a[i]>0 то k := k+1 если k=3 то j := i все все кц если k<3 то вывод ’нет такого’ иначе вывод j все
На естественном языке
Записываем в переменную К начальное значение, равное нулю. В цикле перебираем все элементы с 1-го до 40-го. Если значение текущего элемента массива оказывается больше нуля,то: - увеличиваем значение переменной К на 1; - если значение переменной К стало равно трём, в переменную J записываем значение переменной I. После окончания цикла: - если значение переменной К оказалось меньше трёх, то выводим сообщение, что искомого элемента в массиве нет. Иначе, - выводим значение переменной J.
26
Содержание верного ответа и указания к оцениванию (допускаются иные формулировки ответа,
не искажающие его смысла)
1а. При S=12...23. Во всех этих случаях Петя должен увеличить количество камней в куче в два раза и
выиграть. При значениях S< 12 невозможно одним ходом (+1, +3 или *2) получить 24 или больше камней.
16. При 8=11. Куда бы ни пошёл Петя (11+1=12,11+3=14 или 11*2=22), Ваня удвоит число камней
в куче и выиграет (12*2=24, 14*2=28 или 22*2=44).
2. S=8 или S=10. В обоих случаях Петя должен получить в кучке 11 камней (8+3=11,10+1=11). При
любом ответном ходе Вани (11+1=12,11+3=14 или 11*2=22), Петя должен удвоить число камней в куче
и выиграть (12*2=24, 14*2=28 или 22*2=44).
3. S=7 (также верный ответ S=9). Если Петя добавит в кучу 1 или 3 камня (7+1=8 или 7+3=10), Ваня
должен получить в куче 11 камней (8+3=11, 10+1=11) и в ответ на любой ход Пети (11+1=12, 11+3=14
или 11*2=22), Ваня должен удвоить число камней в куче и выиграть (12*2=24, 14*2=28 или 22*2=44).
Если Петя удвоит число камней в куче (7*2=14), Ваня также должен удвоить число камней в куче и вы-
играть (14*2=28).
Дерево всех партий, возможных при Ваниной стратегии. Знаком «>>» обозначены позиции, в ко-
торых партия заканчивается.
27
var
х,N,s:integer;
begin
readln(N); (считали количество сотрудников}
s := N*(N+1) div 2; {вычисляем сумму номеров всех сотрудников}
read(x); {считали номер первого сотрудника}
while х > 0 do {перебираем номера всех пришедших сотрудников}
begin
s := s - х; {вычитаем номер текущего сотрудника из общей суммы}
read(x); (считали номер очередного сотрудника}
end;
{так как прогулявший сотрудник может быть только один,}
{сумма s либо содержит его номер (если он один), либо равна нулю}
if s = 0 then {все сотрудники пришли}
writeln('Все пришли')
else
for х:=1 to N do
if x <> s then
write(x,' ')
end.
Вариант 14
24
Содержание верного ответа и указания по оцениванию (допускаются иные формулировки ответа, не искажающие его смысла) Баллы
Элементы ответа: 1)6. 2) 2 -1 2-3 (или любая последовательность 4-х целых чисел, в которой два числа 2, а остальные 2 числа — неположительные). 3) (Исправление программы на языке Паскаль.) В строке «prod := 0;» должно быть «prod := 1;». В строке «prod := prod + а; » должно быть «prod := prod * а;».
Указания по оцениванию
Обратите внимание! В задаче требовалось выполнить четыре действия: 1. Указать, что выведет программа для указанных входных данных. 2. Привести пример входных данных, при которых программа работает верно. 3. Исправить одну ошибку в программе. 4. Исправить вторую ошибку в программе.
Правильно выполнены все пункты задания. Ошибки исправлены верно. В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не искажа- ющих замысла автора решения. Ни одна правильная строка не указана в качестве неправильной. 3
Правильно выполнены три действия из четырёх. Верное указание на ошибку при неверном исправлении при этом не засчитывается. Не более одной верной строки указано как неправильная. 2
Правильно выполнено два действия из четырёх. Не более одной верной строки указано в качестве не- верной. 1
Правильно выполнено менее двух действий. 0
Максимальный балл 3
25
На языке Паскаль На языке Бейсик
min:=1000; for i:=l to N do if (a[i]>=100) and (a[i]<=999) and (a [i] mod 10 <> 4) and (a[i]<min) then min:=a[i]; if minOlOOO then writein(min) else writein(1 NO'); MIN = 1000 FOR I = 1 ТО N IF (A(I)>99) AND (A(I)<1000) AND (A(I) MOD 10 О 4) AND (A(I)<MIN) THEN MIN = A(I) ENDIF NEXT I IF MIN = 1000 THEN PRINT "NO" ELSE PRINT MIN ENDIF
На языке СИ На алгоритмическом языке
min=1000; for(i=0 ; i<N ; i++) if( (a[i]>99)&&(a[i]<1000)&& (a [i] %10 !=4)&&(a [i] <min) ) min-a[ i ] ; if( min<1000 ) printf("%d",min); else printf("NO"); min := 1000 нц для i от 1 до N если a[i]>99 и a. [i] <1000 и mod (a [i], 10) 04 и a[i]<min то min := a[i] все кц если min = 1000 то вывод ’NO’ иначе вывод min все
На естественном языке
Записываем в переменную MIN начальное значение, равное 1000. В цикле перебираем все элементы с 1-го до 40-го. Если текущий элемент массива больше 99 и меньше 1000 и меньше MIN и остаток от деления его на 10 не равен 4, тогда кладём значение этого элемента в переменную MIN. После окончания цикла: если значение переменной MIN осталось равно 1000, то выводим на экран «NO», иначе выводим на экран значение переменной MIN.
26
Содержание верного ответа и указания к оцениванию (допускаются иные формулировки ответа,
не искажающие его смысла)
1а. При S=10...29. Во всех этих случаях Петя должен увеличить количество камней в куче в три раза
и выиграть. При значениях S<10 невозможно одним ходом (+1, +2 или *3) получить 30 или больше
камней.
16. При S=9. Куда бы ни пошёл Петя (9+1=10, 9+2=11 или 9*3=27), Ваня утроит число камней
в куче и выиграет (10*3=30, 11*3=33 или 27*3=81).
2. S=7 или S=8 или S=3 (достаточно указать любые два значения из трех. Например, S=7 и S=8).
В обоих случаях Петя должен получить в кучке 9 камней (7+2=9, 8+1=9). При любом ответном ходе
Вани (9+1=10, 9+2=11 или 9*3=27), Петя должен утроить число камней в куче и выиграть (10*3=30,
11*3=33 или 27*3=81).
3. S=6. Если Петя добавит в кучу 1 или 2 камня (6+1=7 или 6+2=8), Ваня должен получить в куче
9 камней (7+2=9, 8+1=9) и в ответ на любой ход Пети (9+1=10, 9+2=11 или 9*3=27), Ваня должен утро-
ить число камней в куче и выиграть (10*3=30, 11*3=33 или 27*3=81). Если Петя утроит число камней
в куче (6*3=18), Ваня также должен утроить число камней в куче и выиграть (18*3=54).
Рассмотрим дерево игры:
А^Ю-^-30»
7^1+2 9 ^dlL+411-^ХзЗ»
'^427^*81»
62Ш±18 ^ю-В-Хзо»
9
7-^*8!»
Дерево всех партий, возможных при Ваниной стратегии. Знаком «>>» обозначены позиции, в кото
рых партия заканчивается.
27
var c,h,r:char;
num:array['А'..'Z1]of integer; {массив количества букв алфавита}
sym:array['А'..'Z']of char;
k:integer;
begin
for c:='A' to 'Z' do
begin
num[c]:=0; {обнуляем массив num}
sym[c]:=c {заполняем массив sym}
end;
read(c);
while c<>'#' do
begin
{если текущий символ - буква}
if (upcase(с)>='А') and (upcase(с)<='Z') then
inc(num[upcase(c)]);
read(c)
end;
for h:='Y' downto 'A' do
for c:='A' to h do
if num[c]>num[succ(c)] then
begin
k:=num[c]; r:=sym[c];
num[c]:=num[succ(c)]; sym[c]:=sym[succ(c)];
num[succ(c)]:=k; symfsucc(c)]:=r
end;
h: = ’A' ;
while num[h]=0 do
inc(h);
for c:=h to ' Z' do
write(sym[c])
end.
Вариант 15
24
Содержание верного ответа и указания по оцениванию (допускаются иные формулировки ответа, не искажающие его смысла) Баллы
Элементы ответа:
D-5.
2) 1 2 3 0 (или любая последовательность 4-х целых чисел, в которой либо нет отрицательных чисел,
а последнее число — 0, либо только одно отрицательное число — последнее).
3) (Исправление программы на языке Паскаль.)
В строке «sum := а» должно быть «sum := sum + а».
В строке «writein (а) » должно быть «writein (sum) ».
Указания по оцениванию
Обратите внимание! В задаче требовалось выполнить четыре действия:
1. Указать, что выведет программа для указанных входных данных.
2. Привести пример входных данных, при которых программа работает верно.
3. Исправить одну ошибку в программе.
4. Исправить вторую ошибку в программе.
Правильно выполнены все пункты задания. Ошибки исправлены верно. В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не искажа- ющих замысла автора решения. Ни одна правильная строка не указана в качестве неправильной. 3
Правильно выполнены три действия из четырёх. Верное указание на ошибку при неверном исправлении при этом не засчитывается. Не более одной верной строки указано как неправильная. 2
Правильно выполнено два действия из четырёх. Не более одной верной строки указано в качестве не- верной. 1
Правильно выполнено менее двух действий. 0
Максимальный балл 3
25
На языке Паскаль На языке Бейсик
mi п:=1; min2:=2 ; s:=abs(а [1]-а[2] ) ; for i:=l to N-l do for j:=i+l to N do if abs(a[i]-a[j])<s then begin min:=i; min2:=j; s : = abs (a[i]-a [ j ] ) end; writeln(min, min2); MIN = 1 MIN2 = 2 S = ABS(A(l)-A(2)) FOR I = 1 TO N-l FOR J = 1+1 TO N IF ABS(A(I)-A(J))<S THEN MIN = I MIN2 = J S = ABS(A(I)-A(J)) ENDIF NEXT J NEXT I PRINT MIN, MIN2
На языке СИ На алгоритмическом языке
min=0; min2~l; s=abs(a[0]-a[1]); for(i=0 ; i<N-l ; i++) for(j=i+l ; j <N ; j++) if (abs(a[i]-a[j])<s) { min=i; min2=j; s=abs (a[i]-a[j]); } printf("%d, %d",min,min2); MIN := 1 MIN2 := 2 s := abs(a[1]-a [ 2]) нц для i от 1 до N-l нц для j- от i+1 до N если abs(a[i]-a[j])<s TO MIN := i MIN2 := j s := abs(a[i]-a [ j]) все кц кц вывод MIN, MIN2
______________________________________На естественном языке___________________________________
Записываем в переменную MIN начальное значение, равное единице, а в переменную MIN2 начальное
значение, равное двум.
В переменную S записываем начальное значение, равное разнице между первым и вторым элементами
массива.
В цикле со счётчиком I перебираем номера элементов с первого по N-1-й.
Внутри него в цикле со счётчиком J перебираем номера элементов с номера 1+1 по N-й.
Если разница между значением элемента массива с номером I и значением элемента массива с номером J
оказывается меньше, чем значение переменной S, то в переменную S записываем эту разницу, в переменную
MIN записываем значение переменной I, а в переменную MIN2 записываем значение переменной J.
После окончания обоих циклов выводим значение переменных MIN и MIN2.
26
Содержание верного ответа и указания к оцениванию (допускаются иные формулировки ответа,
не искажающие его смысла)
1а. При S=20...39. Во всех этих случаях Петя должен увеличить количество камней в куче в два раза и
выиграть. При значениях S<20 невозможно одним ходом (+2, +3 или *2) получить 40 или больше камней.
16. При S=18 или S=19. Куда бы ни пошёл Петя (18+2=20, 18+3=21, 18*2=36, 19+2=21, 19+3=22 или
19*2=38), Ваня удвоит число камней в куче и выиграет (20*2=40,21*2=42,22*2=44,36*2=72 или 38*2=76).
2. Верный ответ: любые 2 значения среди S=9, S=15, S=16 или S=17. Например, S=15 или S=16.
В обоих случаях Петя должен получить в кучке 18 камней (15+3=18, 16+2=18). При любом ответном
ходе Вани (18+2=20, 18+3=21 или 18*2=36), Петя должен удвоить число камней в куче и выиграть
(20*2=40, 21*2=42 или 36*2=72).
3. S=13 (также верный ответ S=14). Если Петя добавит в кучу 2 или 3 камня (13+2=15 или 13+3=16),
Ваня должен получить в куче 18 камней (15+3=18, 16+2=18) и в ответ на любой ход Пети (18+2=20,
18+3=21 или 18*2=36), Ваня должен удвоить число камней в куче и выиграть (20*2=40, 21*2=42 или
36*2=72). Если Петя удвоит число камней в куче (13*2=26), Ваня также должен удвоить число камней
в куче и выиграть (26*2=52).
Рассмотрим дерево игры:
Дерево всех партий, возможных при Ваниной стратегии. Знаком «>> » обозначены позиции, в кото-
рых партия заканчивается.
27
var s:string;
flag: boolean;
i,k,len:integer;
begin
readln(s); {считали всю входную строку}
flag:=false; {признак середины слова}
for i:=l to length(s) do
begin
{если текущий символ - буква)
if (upcase(s[i])>='А') and (upcase(s[i])<='Z') then
if flag then {не первая буква слова}
1еп:=1еп+1 {текущая длина слова увеличилась на 1}
else {первая буква слова}
begin
flag:-true;
1еп:=1 {текущая длина слова = 1}
end
else {текущий символ - не буква}
if flag then {слово только что закончилось}
begin
flag:=false;
for k:=l to len do {перебираем все символы слова}
begin
if ord(upcase(s[i-k]))-ord('A')+len>25 then {выход за алфавит}
s[i-k]:=chr(ord(s[i-k])+len-26) {кодируем символ}
else s[i-k]:=chr(ord(s[i-k])+len)
end
end
end;
writein(s)
end.
Вариант 16
24
Содержание верного ответа и указания по оцениванию (допускаются иные формулировки ответа, не искажающие его смысла) Баллы
Элементы ответа: 1)0. 2)1234 (или любая последовательность 4-х целых чисел, в которой есть хотя бы одно положительное число). 3) (Исправление программы на языке Паскаль.) В строке «if min > 0 then* должно быть «if min < 2000 then* (или min о 2000 или min <= 1000). В строке «writein (0) » должно быть «writein ('NO') ».
Указания по оцениванию
Обратите внимание! В задаче требовалось выполнить четыре действия: 1. Указать, что выведет программа для указанных входных данных. 2. Привести пример входных данных, при которых программа работает верно. 3. Исправить одну ошибку в программе. 4. Исправить вторую ошибку в программе.
Правильно выполнены все пункты задания. Ошибки исправлены верно. В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора решения. Ни одна правильная строка не указана в качестве неправильной. 3
Правильно выполнены три действия из четырёх. Верное указание на ошибку при неверном исправлении при этом не засчитывается. Не более одной верной строки указано как неправильная. 2
Правильно выполнено два действия из четырёх. Не более одной верной строки указано в качестве неверной. 1
Правильно выполнено менее двух действий. 0
Максимальный балл 3
25
На языке Паскаль На языке Бейсик
к := 0; for i:=l to N-l do if (a[i]*a[i+l] mod 2=0) and (a[i]*a[i+l] > 0) then к := к + 1; writein(к) К = 0 FOR I = 1 ТО N-l IF (A(I)*A(I+1) MOD 2=0) AND (A(I)*A(I+1) > 0) THEN К = К + 1 ENDIF NEXT I PRINT К
На языке СИ На алгоритмическом языке
k = 0; for(i=0 ; i<N-l ; i++) if( a[i]*a[i+l] % 2 == 0 && a[i]*a[i+l] > 0 ) k++; printf("%d",k); к := 0 нц для i от 1 до N-1 если mod(a[i]*а[i+1],2) = 0 и a[i]*a[i+l] > 0 то к := к + 1 все КЦ вывод к все
На естественном языке
Записываем в переменную К начальное значение, равное нулю. В цикле перебираем все элементы с 1-го до 39-го. Если текущий элемент массива умножить на следующий эле- мент массива дает остаток от деления на 2 равный нулю И это произведение больше нуля, тогда увеличиваем на единицу значение переменной К. После окончания цикла выводим на экран значение переменной К.
26
Содержание верного ответа и указания к оцениванию (допускаются иные формулировки ответа,
не искажающие его смысла)
1а. При S=9...24. Во всех этих случаях Петя должен увеличить количество камней в куче в три раза и
выиграть. При значениях S<9 невозможно одним ходом (+1, +3 или *3) получить 25 или больше камней.
16. При S=8. Куда бы ни пошёл Петя (8+1=9, 8+3=11 или 8*3=24), Ваня утроит число камней в куче
и выиграет (9*3=27, 11*3=33 или 24*3=72).
2. S=5 или S=7. В обоих случаях Петя должен получить в кучке 8 камней (5+3=8, 7+1=8). При лю-
бом ответном ходе Вани (8+1=9, 8+3=11 или 8*3=24), Петя должен утроить число камней в куче и вы-
играть (9*3=27, 11*3=33 или 24*3=72).
3. S=4 (также верный ответ S=6). Если Петя добавит в кучу 1 или 3 камня (4+1=5 или 4+3=7), Ваня
должен получить в куче 8 камней (5+3=8, 7+1=8) и в ответ на любой ход Пети (8+1=9, 8+3=11 или
8*3=24), Ваня должен утроить число камней в куче и выиграть (9*3=27, 11*3=33 или 24*3=72). Если
Петя утроит число камней в куче (4*3=12), Ваня также должен утроить число камней в куче и выиграть
(12*3=36).
Рассмотрим дерево игры:
9 ^*27»
5 В£+3 g ±3,11^^33»
ч-'Х В:*3
1х*24——*72»
В‘*3
► 9 —*27»
12-^>36» ^424-^*72»
Дерево всех партий, возможных при Ваниной стратегии. Знаком «>> » обозначены позиции, в кото
рых партия заканчивается.
27
var s,k:array[1..99] of integer;
ch:char;
i,N,sh,ball,max,nmax:integer;
begin
for i:=l to 99 do {обнуляем массивы)
begin
s[i]:=0; k[i]:=0
end;
readln(N)/ {считали количество строк)
for i:=l to N do {перебираем все входные строки)
begin
repeat
read(ch)
until ch=' '/{считана фамилия)
repeat
read(ch)
until ch=' '/{считано имя)
readln(sh,ball)/ {считали номер школы и балл ученика)
s[sh]:=s[sh]+Ьа11/ {считаем сумму баллов по школе]
k.[sh] : =к[sh] +1 {считаем количество учеников из школы)
end/
for~i:=l to 99 do
if k[i]>0 then
s[i]:=s[i] div k[i]/ {считаем средний балл по каждой школе)
тах:=1/ птах:=1/
for i:=2 to 99 do {ищем максимум среди средних баллов)
if s[i]>s[max] then
begin
max:=i/ nmax:=l
end
else
if s[i]=s[max] then {считаем количество максимумов)
nmax:=nmax+1/
if nmax=l then writein(max,' *,s[max])
else writein(nmax)
end.
Вариант 17
24___________
Содержание верного ответа и указания по оцениванию
(допускаются иные формулировки ответа, не искажающие его смысла)
Элементы ответа:
1)
Область Условие 1 (j/>=abs(x)—1) Условие 2 (»<=0) Условие 3 (у<—х*х) Программа выведет Область обрабатывается верно
А нет — — — нет
В да нет — — нет
С нет — — — нет
D нет — — — нет
Е нет — — — нет
F да . да нет не принадлежит нет
G да Да да принадлежит да
Н нет — — — нет
I да да нет не принадлежит да
2) Возможная доработка (Паскаль):
if (х<=0) and (y>=abs(х)-1) and (у<=0) or
(х>=0) and (y>-abs(х)-1) and (у<=-х*х) then
write('принадлежит')
else
write('не принадлежит')
Возможны и другие способы доработки. Пример' if (y>=abs(х)-1) and ((у<=-х*х) or (х<=0) and (у<=0)) then write('принадлежит') else write('не принадлежит')
Указания по оцениванию
Обратите внимание! В задаче требовалось выполнить три действия: указать для каждой области, как будет рабо- тать программа, что она выведет на экран и правильно ли это (в виде таблицы), и исправить две ошибки. Баллы за данное задание начисляются как сумма баллов за верное выполнение каждого действия. 1. Верное заполнение предложенной таблицы. 2. Исправление неправильного использования условного оператора, в результате чего при невыполнении перво- го или второго условия программа не выдавала ничего (отсутствуют случаи ELSE). Исправлением этой ошибки может быть либо добавление случая ELSE к каждому условию IF, либо объединение всех условий IF в одно при помощи конъюнкции. В сложных случаях это действие считается выполненным, если программа выдает одно из двух сообщений «при- надлежит» или «не принадлежит» для любых чисел х и у, при этом программа не стала работать хуже, чем рань- ше, т. е. для всех точек, для которых программа ранее выдавала верный ответ, доработанная программа также должна выдавать верный ответ. 3. Исправление ошибки, из-за которой приведённым трём ограничениям не удовлетворяют точки плоскости, у которых у>-х2, i/>=|x|-1, у<=0 и х<0 (область F). Исправлением этой ошибки может быть разбиение области на две части и использование дизъюнкции либо отбрасывание от большей области её части. В сложных случаях это действие считается выполненным, если верно определена закрашенная область, т. е. про- грамма выводит сообщение «принадлежит» для всех точек закрашенной области и только для них, для точек вне закрашенной области программа выводит «не принадлежит» или не выводит ничего.
Правильно выполнены оба пункта задания. Исправлены две ошибки. Программа для всех пар чисел х, у верно определяет принадлежность точки закрашенной области. В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не искажа- ющих замысла автора решения. 3
1. Правильно выполнены два действия из трёх (исправлены обе ошибки, но в первом пункте задания не приведена таблица (либо таблица содержит ошибки хотя бы в одной строке), либо приведена таблица (которая содержит ошибки не более чем в одной строке), но исправлена только одна ошибка программы). При написании операций сравнения допускается одно неправильное использование строгих/нестрогих неравенств (считается несущественной ошибкой, погрешностью записи). Например, вместо «у>=-х* ис- пользуется «у>-х». 2. Или выполнены все три действия, но при этом в логическом выражении неверно учтены приоритеты логических операций (не расставлены или неправильно расставлены скобки в выражениях). 2
Правильно выполнено только одно действие из трёх, то есть, либо только приведена таблица, которая содержит ошибки в не более чем двух строках, либо таблица не приведена (или приведена и содержит ошибки более чем в двух строках), но исправлена одна ошибка программы. При оценивании этого за- дания на 1 балл допускается не учитывать корректность работы программ на точках границ областей (вместо нестрогих неравенств в решении были использованы строгие неравенства или наоборот). 1
Все пункты задания выполнены неверно (таблица анализа правильности алгоритма не приведена, либо содержит ошибки более чем в двух строках, программа не приведена, либо ни одна из двух ошибок не исправлена). 0
Максимальный балл 3
25
На языке Паскаль На языке Бейсик
к := 0; for i:=l to N do if (a[i]>=100) and (a[i]<=?999) then к := к + 1; if к > 0 then writein(k) else writein('NO') ; К = 1000 FOR I = 1 TO N IF (A(I)>99) AND (A(I)<1000) THEN К = К + 1 ENDIF NEXT I IF К = 0 THEN PRINT "NO" ELSE PRINT К ENDIF
На языке СИ На алгоритмическом языке
к = 0; for(i=0 ; i<N ; i++) if( (a[i]>99)&&(a[i]<1000) ) k++; if ( к > 0 ) printfk); else printf("NO"); к := 1000 нц для i от 1 до N если a[i]>99 и a[i]<1000 то к := к + 1 все КЦ если к = 0 то вывод "NO" иначе вывод к все
На естественном языке
Записываем в переменную К начальное значение, равное 0. В цикле перебираем все элементы с 1-го до 40-го. Если текущий элемент массива больше 99 и меньше 1000, тогда увеличиваем значение переменной К на 1. После окончания цикла: если значение переменной К осталось равно 0, то выводим на экран «NO», иначе выводим на экран значение переменной К.
26
Содержание верного ответа и указания к оцениванию (допускаются иные формулировки ответа,
не искажающие его смысла)
1. Для обеих позиций (5,20) и (7,19) выигрышную стратегию имеет Ваня. Он выигрывает первым же
ходом независимо от хода Пети. Для этого ему необходимо удвоить количество камней во второй куче.
Обоснование.
Из позиции (5,20) Петя может получить позиции (6,20), (10,20), (5,21) и (5,40). Во всех случаях сумма
камней в кучах меньше 46. Однако при ходе Вани (удвоение второй кучи) сумма становится не менее 46.
Из позиции (7,19) Петя может получить позиции (8,19), (14,19), (7,20) и (7,38). Во всех случаях сумма
камней в кучах меньше 46. Однако при ходе Вани (удвоение второй кучи) сумма становится не менее 46.
2. Для всех трёх позиций (5,19), (6,19) и (7,18) выигрышную стратегию имеет Петя.
Из позиции (5,19) Петя может добавить 1 камень во вторую кучу и получить (5,20).
Айз позиций (6,19) и (7,18) Петя может получить позицию (7,19) добавив камень во вторую (6+1,19)
или первую (7,18+1) кучу соответственно.
Для полученных позиций (5,20) и (7,19) в пункте 1 доказано, что они проигрышные. Как бы ни по-
ходил Ваня, Петя удвоит количество камней во второй куче и выиграет.
3. В позиции (6,18) выигрышную стратегию имеет Ваня.
Если Петя первым ходом добавит 1 камень в какую-нибудь кучу, получится позиция (7,18) или
(6,19). В пункте 2 доказано, что эти позиции выигрышные. Петя должен добавить 1 камень в другую
кучу (7,18+1) или (6+1,19) соответственно и в ответ на любой ответный ход Вани удвоить число камней
во второй куче.
Если же Петя первым ходом удвоит число камней в какой-нибудь куче (получится (12,18) или (6,36)),
Ваня своим первым ходом удвоит число камней во второй куче и выиграет.
Рассмотрим дерево игры:
.<о‘
(6,18)
о 1Q*7
(8,19) - » (8,38)»
<у^2^(14,19) в:19*2>(:14’38)>>
(7,18) В:18+1» (7,19)^^^+l(7,20) B:Z0*2» (7,40)»
^>(12,18) В:18*2
(6,36) ?:36*2»(
(6,19) В:6+1
В’38*2
^(7,38) С7,76)»
-(12,36)»
'6 72)» ч.Л8’19) В:19*2>(8.38)»
<14'19) » (14,38)»
(7,19) (7,20) В:20*2> (7,40)»
^^(7,38) В:38*2> (7,76)»
Дерево всех партий, возможных при Ваниной стратегии. Знаком «>>» обозначены позиции, в кото
рых партия заканчивается.
27
var num,bal: array[1..99] of integer;
name: array[l.,99] of string[52];
s:string[52];
ch:char;
i,N,sh,ball:integer;
begin
for i:=l to 99 do {обнуляем массивы}
begin
num[i]:=0; bal[i]:=-l
end;
readln(N); {считали количество строк}
for i:=l to N do {перебираем все входные строки}
begin
s: =' ' ;
repeat
read(ch); s:=s+ch
until ch=' ';{считана фамилия и записана в переменную s}
repeat
read(ch)
until ch=’ ';{считано имя}
readln(sh,ball); {считали номер школы и балл ученика}
if ball>bal[sh] then {если текущий балл лучше}
begin
bal[sh]:= ball; {запоминаем текущий балл по школе}
name[sh]:=s {и фамилию ученика}
end;
num[sh]:=num[sh]+1 {считаем количество учеников из школы}
end;
for i:=l to 99 do
if num[i]>=3 then {выбираем только школы, из которых сдавало}
{больше трех учеников}
writeln (i,' ',name[i])
end.
Вариант 18
24__________________________________________
Содержание верного ответа и указания по оцениванию
(допускаются иные формулировки ответа, не искажающие его смысла)
Элементы ответа:
1)
Область Условие 1 (x*x+j/*j/<=1) Условие 2 (?/>=*) Условие 3 (х<=0) Программа выведет Область обрабатывается верно
А нет — — — нет
В нет — — — нет
С нет — — — нет
D нет — — — нет
Е да да да принадлежит да
F да да нет не принадлежит нет
G да нет — — нет
Н да нет — — нет
2) Возможная доработка (Паскаль): if (х<=0) and (х*х+у*у<=1) or (х>=0) and (х*х+у*у<=1) and (у>=х) then write('принадлежит') else write('не принадлежит') Возможны и другие способы доработки. Пример'. if (х*х+у*у<=1) and ( (х<=0) or (у>=х)) then write('принадлежит') else write('не принадлежит')
Указания по оцениванию
Обратите внимание! В задаче требовалось выполнить три действия: указать для каждой области, как будет рабо- тать программа, что она выведет на экран и правильно ли это (в виде таблицы), и исправить две ошибки. Баллы за данное задание начисляются как сумма баллов за верное выполнение каждого действия. 1. Верное заполнение предложенной таблицы. 2. Исправление неправильного использования условного оператора, в результате чего при невыполнении перво- го или второго условия программа не выдавала ничего (отсутствуют случаи ELSE). Исправлением этой ошибки может быть либо добавление случая ELSE к каждому условию IF, либо объединение всех условий IF в одно при помощи конъюнкции. В сложных случаях это действие считается выполненным, если программа выдает одно из двух сообщений «при- надлежит* или «не принадлежит* для любых чисел х и у, при этом программа не стала работать хуже, чем рань- ше, т. е. для всех точек, для которых программа ранее выдавала верный ответ, доработанная программа также должна выдавать верный ответ. 3. Исправление ошибки, из-за которой приведённым трём ограничениям не удовлетворяют точки плоскости, у которых х2+р2<=1 и у <х и х<=0 (область G), а также те, у которых х2+у2<=1 и у>=х и х>0 (область F). Исправ- лением этой ошибки может быть разбиение области на две части и использование дизъюнкции либо отбрасыва- ние от большей области её части. В сложных случаях это действие считается выполненным, если верно определена закрашенная область, т. е. про- грамма выводит сообщение «принадлежит» для всех точек закрашенной области и только для них, для точек вне закрашенной области программа выводит «не принадлежит» или не выводит ничего.
Правильно выполнены оба пункта задания. Исправлены две ошибки. Программа для всех пар чисел (х, у) верно определяет принадлежность точки закрашенной области. В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не искажа- ющих замысла автора решения. 3
1. Правильно выполнены два действия из трёх (исправлены обе ошибки, но в первом пункте задания не приведена таблица (либо таблица содержит ошибки хотя бы в одной строке), либо приведена таблица (которая содержит ошибки не более чем в одной строке), но исправлена только одна ошибка программы). При написании операций сравнения допускается одно неправильное использование строгих/нестрогих неравенств (считается несущественной ошибкой, погрешностью записи). Например, вместо «у>=х» ис- пользуется «у>х». 2. Или выполнены все три действия, но при этом в логическом выражении неверно учтены приоритеты логических операций (не расставлены или неправильно расставлены скобки в выражениях). 2
Правильно выполнено только одно действие из трёх, то есть, либо только приведена таблица, которая со- держит ошибки в не более чем двух строках, либо таблица не приведена (или приведена и содержит ошиб- ки более чем в двух строках), но исправлена одна ошибка программы. При оценивании этого задания на 1 балл допускается не учитывать корректность работы программ на точках границ областей (вместо не- строгих неравенств в решении были использованы строгие неравенства или наоборот). 1
Все пункты задания выполнены неверно (таблица анализа правильности алгоритма не приведена, либо содержит ошибки более чем в двух строках, программа не приведена, либо ни одна из двух ошибок не ис- правлена). 0
Максимальный балл 3
25
На языке Паскаль На языке Бейсик
к := 1; max := а[1]; for i:=2 to N do if a [i] > max then begin max := a[i]; к := 1 end else if a[i] = max then к := к + 1; writeln(к) К = 0 МАХ = -10001 FORI = 1 ТО N IF A(I) > MAX THEN МАХ = А (I) К = 1 ELSE IF A(I) = MAX THEN К = К + 1 ENDIF ENDIF NEXT I PRINT К
На языке СИ На алгоритмическом языке
к = 1; max = а[0]; for(i=l ; i<N ; i++) if (a [i] > max) { max = a [ i ] ; к = 1; } else if(a[i] == max) k++; printf("%d”,k); k := 1 max := a[i] нц для i от 2 до N если a [ i ] > max TO max := a[i] • k := 1 иначе если a[i] = max TO k := k + 1 все все кц вывод k все
На естественном языке
Записываем в переменную К начальное значение, равное 1. Записываем в переменную МАХ начальное значение, равное первому элементу массива. В цикле перебираем элементы со 2-го до 40-го. Если значение текущего элемента массива больше значения переменной МАХ, то в переменную МАХ кладем значение текущего элемента и кладем в переменную К число 1. Иначе, если значение текущего элемента равно значению переменной МАХ, увеличиваем значение переменной К на 1. После окончания цикла выводим на экран значение переменной К.
26
Содержание верного ответа и указания к оцениванию (допускаются иные формулировки ответа,
не искажающие его смысла)
1. Для обеих позиций (4,30) и (6,29) выигрышную стратегию имеет Ваня. Он выигрывает первым же
ходом независимо от хода Пети. Для этого ему необходимо удвоить количество камней во второй куче.
Обоснование:
Из позиции (4,30) Петя может получить позиции (5,30), (8,30), (4,31) и (4,60). Во всех случаях
сумма камней в кучах меньше 65. Однако при ходе Вани (удвоение второй кучи) сумма становится
не менее 65.
Из позиции (6,29) Петя может получить позиции (7,29), (12,29), (6,30) и (6,58). Во всех случаях
сумма камней в кучах меньше 65. Однако при ходе Вани (удвоение второй кучи) сумма становится не
менее 65.
2. Для всех трёх позиций (4,29), (6,28) и (5,29) выигрышную стратегию имеет Петя.
Из позиции (4,29) Петя может добавить 1 камень во вторую кучу и получить (4,30).
А из позиций (6,28) и (5,29) Петя может получить позицию (6,29) добавив камень во вторую (6,28+1)
или первую (5+1,29) кучу соответственно.
Для полученных позиций (4,30) и (6,29) в пункте 1 доказано, что они проигрышные. Как бы ни по-
ходил Ваня, Петя удвоит количество камней во второй куче и выиграет.
3. В позиции (5,28) выигрышную стратегию имеет Ваня.
Если Петя первым ходом добавит 1 камень в какую-нибудь кучу, получится позиция (6,28) или
(5,29). В пункте 2 доказано, что эти позиции выигрышные. Петя должен добавить 1 камень в другую
кучу (6,28+1) или (5+1,29) соответственно и в ответ на любой ответный ход Вани удвоить число камней
во второй куче.
Если же Петя первым ходом удвоит число камней в какой-нибудь куче (получится (10,28) или (5,56)),
Ваня своим первым ходом удвоит число камней во второй куче и выиграет.
Рассмотрим дерево игры:
R•
х(7,29) >(7,58)»
<12 ’ 29) ► с 12,58)»
*(6,30) В:ЗО*2>(6,60)»
,58) В:58*2> (6,116)»
,,29) в:29*2> (7,58)»
(12,29) В: 29*?> (12,58)»
(6,30) В:3°*2> (6,60)»
<*(6, 58) В:58"2» (6,116)»
(5,28)
(6,28) В:28+1> (6,29)
n-S*2 В'28*2 “(6
>(10,28) * (10,56)»
ЗД-~<^(5,56) В:56*2
R
(5,29) —> (6,29)
Дерево всех партий, возможных при Ваниной стратегии. Знаком «>>» обозначены позиции, в кото-
рых партия заканчивается.
27
var k:array[0..100] of integer; {число учеников, набравших такой балл}
ch:char;
i,N,sh,ball,num,s:integer;
begin
for i:=0 to 100 do {обнуляем массив}
k[i]:=0; '
readln(N); {считали количество строк}
for i:=l to N do {перебираем все входные строки}
begin
repeat
read(ch)
until ch=' ';{считана фамилия)
repeat
read(ch)
until ch=1 ';{считано имя}
readln(sh,ball); {считали номер школы и балл ученика}
k[ball]:=k[ball]+1 {считаем количество учеников, набравших такой балл}
end;
num:=N div 5; {вычисляем 20% от количества учеников}
s: =0;
i:=101;
while s<num do
begin
i :=i-l;
s:=s+k[i]
end;
if s=num then {'отлично' можно поставить ровно 20% участников}
writein (i)
else
if k[i]=s then {наибольший балл набрало более 20% участников}
writein(i)
else {ученики, набравшие 'i' баллов, не получат 'отлично'}
begin
i:=i+l;
while k[i]=0 do {ищем участников с большим баллом}
i:=i+l;
writein(i)
end
end.
Вариант 19
24
Содержание верного ответа и указания по оцениванию (допускаются иные формулировки ответа, не искажающие его смысла) Баллы
Элементы ответа: 1.
Область Условие 1 (x>=—2) Условие 2 (х<=7) Условие 3 (х<4) Программа выведет Область обрабатывается верно
А нет — — — нет
В да да да не принадлежит нет
С да да да не принадлежит да
D да да нет принадлежит да
Е да нет — — нет
2. Возможная доработка (Паскаль): if (х>=-2) and (х<=1) or (х>=4) and (х<=7) then write('принадлежит 1) else write('не принадлежит') Возможны и другие способы доработки. Например-. if х>=-2 then if х<=1 then write('принадлежит') else if x>=4 then if x<=7 then write('принадлежит') else write('не принадлежит') else write('не принадлежит') else write ('не принадлежит')
Указания по оцениванию
Обратите внимание! В задаче требуется выполнить три действия. 1. Заполнить таблицу. 2. Исправить ошибку в условном операторе. 3. Исправить ошибку, связанную с неправильным набором условий. Баллы за данное задание начисляются как сумма баллов за верное выполнение каждого действия. Рассмотрим отдельно каждое действие.
1. Действие по заполнению таблицы считается выполненным, если в таблице нет ошибок или ошибки присут- ствуют только в одной строке. 2. Неправильное использование условного оператора, в результате чего при невыполнении первого или второго ус- ловия программа не выдавала ничего (отсутствуют случаи ELSE). Исправлением этой ошибки может быть либо до- бавление случая ELSE к каждому условию IF, либо объединение всех условий IF в одно при помощи конъюнкции. В сложных случаях это действие считается выполненным, если программа выдаёт одно из двух сообщений: «при- надлежит» или «не принадлежит» — для любых чисел х, при этом программа не стала работать хуже, чем рань- ше, т. е. для всех точек, для которых программа ранее выдавала верный ответ, доработанная программа также должна выдавать верный ответ. 3. Приведённых трёх ограничений недостаточно для описания двух областей (потеряно условие х<=1). Кроме того, необходимо учесть, что области не соединены. Исправлением этой ошибки может быть разбиение области на две части и использование дизъюнкции, либо использование сложной комбинации каскадных условий. В сложных случаях это действие считается выполненным, если верно определены заштрихованные области, т. е. программа выводит сообщение «принадлежит» для всех точек закрашенных областей, и только для них, для то- чек вне заштрихованных областей программа выводит «не принадлежит» или не выводит ничего. В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора решения.
Выполнены все три действия. 3
Правильно выполнены два действия из трёх (исправлены обе ошибки, но в пункте 1 задания не при- ведена таблица (либо таблица содержит ошибки в двух и более строках), либо приведена таблица (ко- торая содержит ошибки не более чем в одной строке), но исправлена только одна ошибка программы). При написании операций сравнения допускается одно неправильное использование строгих/не- строгих неравенств (считается несущественной ошибкой, погрешностью записи). Например, вместо «х<=1» используется «х<1» 2
Правильно выполнено только одно действие из трёх, т. е. либо только приведена таблица, которая со- держит ошибки в не более чем одной строке, либо таблица не приведена (или приведена и содержит ошибки более чем в одной строке), но исправлена одна ошибка программы. При оценивании этого за- дания на 1 балл допускается не учитывать корректность работы программ на точках границ областей (вместо нестрогих неравенств в решении были использованы строгие неравенства или наоборот) 1
Все пункты задания выполнены неверно (таблица анализа правильности алгоритма не приведена либо содержит ошибки в двух и более строках, программа не приведена либо ни одна из двух ошибок не ис- правлена) 0
Максимальный балл 3
25
На языке Паскаль На языке Бейсик
к := 0; for i:=l to N-l do if a[i] <= a[i+l] then к := к + 1; if к = 0 then writeln ( 'YES') else writeln ( 1 NO') К = 0 FOR I = 1 TO N-l IF A(I) > A(I+1) THEN К = К + 1 ENDIF NEXT I IF К = N-l THEN PRINT "YES" ELSE PRINT "NO" ENDIF
На языке СИ На алгоритмическом языке
к = 0; for(i=l ; i<N ; i++) if(a[i-1] <= a [i]) k++; if(k == 0) printf("YES"); else printf ("NO"); k := 0 нц для i от 2 до N если a[i-1] > a[i] ТО k : = k + 1 все кц если k = N-1 ТО вывод 1 YES’ иначе вывод 'NO' все все
На естественном языке
Записываем в переменную К начальное значение, равное нулю.
В цикле перебираем элементы со 2-го до 40-го. Если значение текущего элемента массива меньше или равно зна-
чению предыдущего элемента массива, увеличиваем значение переменной К на 1.
После окончания цикла: если значение переменной К равно нулю, выводим на экран «YES», иначе выводи на
экран «NO».
26
Содержание верного ответа (допускаются иные формулировки ответа, не искажающие его смысла)
Обозначим R(n) — количество программ, которые преобразуют число 3 в число п. Обозначим t(n)
наибольшее кратное девяти, не превосходящее п.
Заметим, что мы можем получить только числа, кратные 3.
Обе команды исполнителя увеличивают исходное число, поэтому общее количество команд в про-
грамме не может превосходить (93-3)/3=31.
Верны следующие соотношения:
1. Если пне делится на 9, то тогда R(n) = R(t(n)), так как существует единственный способ получения
п из t(n) — прибавлением троек.
2. Пусть п делится на 9.
Тогда Я(п) = Я(п/3) + 7?(п-3) = 7?(п/3) + Я(п-9) (если п>9).
При п=9 Я(п) = 2 (два способа: прибавлением двух троек или однократным умножением на 3).
Поэтому достаточно постепенно вычислить значения 7?(п) для всех чисел, кратных девяти и не пре-
восходящих 72: сначала вычисляем Я(3), затем 72(9), R( 18) и т. д.
Имеем:
72(3) = 1 = Я(6)
Я(9) = 2 = 72(12) = 72(15)
Я(18) = Я(6) + Я(9) =1 + 2 = 3 = 72(21) = 72(24)
Я(27) = Я(9) + Я( 18) =2 + 3 = 5 = Л(30) = Л(33)
Л(36) = К(12) + Я(27) = 2 + 5 = 7 = 72(39) = Л(42)
72(45) = 72(15) + Я(36) = 2 + 7 = 9 = Я(48) = 72(51)
72(54) = R( 18) + 72(45) = 3 + 9 = 12 = Я(57) = 2?(60)
2?(63) = Я(21) + К(54) = 3 + 12 = 15 = Я(66) = 72(69)
R( 72) = 72(24) + Я(63) = 3 + 15 = 18 = Я(75) = R( 78)
72(81) = R(2 7) + R(72) = 5 + 18 = 23 = Я(84) = 72(87)
72(90) = 72(30) + 72(81) = 5 + 23 = 28 = Я(93)
Ответ: 28
Другая форма решения
Будем решать поставленную задачу последовательно для чисел 3, 6, 9, ..., 93 (т. е. для каждого из
чисел определим, сколько программ исполнителя существует для его получения). Заметим, что мы мо-
жем получить только числа, кратные 3. Количество программ, которые преобразуют число 3 в число п,
будем обозначать через R(n). Число 3 у нас уже есть, значит, его можно получить с помощью «пустой»
программы. Любая непустая программа увеличит исходное число, т. е. даст число, больше 3. Значит,
7?(3) = 1. Для каждого следующего числа рассмотрим, из какого числа оно может быть получено за одну
команду исполнителя. Если число не делится на девять, то оно может быть получено только из преды-
дущего с помощью команды прибавь 3. Значит, количество искомых программ для такого числа равно
количеству программ для предыдущего возможного числа: R(i) = R(i-3). Если число на 9 делится, то
вариантов последней команды два: прибавь 3 и умножь на 3, тогда R(i) = R(i-3) + R(i/3). Заполним со-
ответствующую таблицу по приведённым формулам слева направо:
3 6 9 12 15 18 21 24 27 30 33 36 39 42 45
1 1 2 2 2 3 3 3 5 ' 5 5 7 7 7 9
48 51 54 57 60 63 66 69 72 75 78 81 84 87 90
9 9 12 12 12 15 15 15 18 18 18 23 23 23 28
93
28
При этом ячейки, относящиеся к числам, которые не делятся на девять, можно в решении и опустить
(за исключением первого и последнего чисел):
3 9 18 27 36 45 54 63 72 81 90 93
1 2 3 5 7 9 12 15 18 23 28 28
Ответ: 28
27
var
i,y,k,N : integer;
ch : char;
num : array[1990..2015] of integer; // Количество двоек за этот год
begin
for у := 1990 to 2015 do
num[у] := -1; // Признак того, что оценок в этот год не было
readln(п); // считываем количество месяцев
for i:= 1 to n do // для каждого месяца
begin
repeat
read(ch) // пропускаем название месяца в начале строки
until ch = ' '; // до первого пробела
readln(у,к); // считываем номер года и количество двоек в этот год
if num[у] = -1 then // если ранее этот год еще не встречался
num[у] := к // сохраняем число двоек за этот год
else // иначе
num[у] := num[у] + к // добавляем число двоек к имеющимся
end;
// найдем первый год обучения (там num не равен -1)
у := 1990;
while num[у] = -1 do
у := у + 1;
к := 0; // число лет, в которые учился лучше первого
for i := у+1 to 2015 do // перебираем годы после первого
if (num[i] >= 0) and // если ученик в этот год учился
(num[i] < num[у]) then //и учился лучше, чем в первый год
begin
writein(i); // выводим номер этого года
к := к + 1 // увеличиваем счетчик числа таких лет
end;
if к = 0 then // если таких лет не было
writein('Нет таких лет')
end.
Вариант 20
24
Содержание верного ответа и указания по оцениванию
(допускаются иные формулировки ответа, не искажающие его смысла)
Элементы ответа:
1.
Область Условие 1 (х>=3) Условие 2 (х<=9) Условие 3 (х>=7) Программа выведет Область обрабатывается верно
А нет — — — нет
В да да нет не принадлежит нет
С да да нет не принадлежит да
D да да да принадлежит да
Е да нет — — нет
2. Возможная доработка (Паскаль): if (х>=3) and (х<=5) or (х>=7) and (х<=9) then write('принадлежит') else write ('не принадлежит') Возможны и другие способы доработки. Например: if х>=3 then if х<=5 then write('принадлежит') else if x>=7 then if x<=9 then write('принадлежит') else write('не принадлежит') else write('не принадлежит') else write ('не принадлежит')
Указания по оцениванию
Обратите внимание! В задаче требуется выполнить три действия. 1. Заполнить таблицу. 2. Исправить ошибку в условном операторе. 3. Исправить ошибку, связанную с неправильным набором условий. Баллы за данное задание начисляются как сумма баллов за верное выполнение каждого действия. Рассмотрим отдельно каждое действие. 1. Действие по заполнению таблицы считается выполненным, если в таблице нет ошибок или ошибки присут- ствуют только в одной строке. 2. Неправильное использование условного оператора, в результате чего при невыполнении первого или второ- го условия программа не выдавала ничего (отсутствуют случаи ELSE). Исправлением этой ошибки может быть либо добавление случая ELSE к каждому условию IF, либо объединение всех условий IF в одно при помощи конъюнкции. В сложных случаях это действие считается выполненным, если программа выдаёт одно из двух сообщений: « при- надлежит» или «не принадлежит» — для любых чисел х, при этом программа не стала работать хуже, чем рань- ше, т. е. для всех точек, для которых программа ранее выдавала верный ответ, доработанная программа также должна выдавать верный ответ. 3. Приведённых трёх ограничений недостаточно для описания двух областей (потеряно условие х<=5). Кроме того, необходимо учесть, что области не соединены. Исправлением этой ошибки может быть разбиение области на две части и использование дизъюнкции, либо использование сложной комбинации каскадных условий. В сложных случаях это действие считается выполненным, если верно определены заштрихованные области, т. е. программа выводит сообщение «принадлежит» для всех точек закрашенных областей, и только для них, для точек вне заштрихованных областей программа выводит «не принадлежит» или не выводит ничего. В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора решения.
Выполнены все три действия. 3
Правильно выполнены два действия из трёх (исправлены обе ошибки, но в пункте 1 задания не приве- дена таблица (либо таблица содержит ошибки в двух и более строках), либо приведена таблица (которая содержит ошибки не более чем в одной строке), но исправлена только одна ошибка программы). При написании операций сравнения допускается одно неправильное использование строгих/нестрогих неравенств (считается несущественной ошибкой, погрешностью записи). Например, вместо «х<=5» ис- пользуется «х<5» 2
Правильно выполнено только одно действие из трёх, т. е. либо только приведена таблица, которая содер- жит ошибки в не более чем одной строке, либо таблица не приведена (или приведена и содержит ошиб- ки более чем в одной строке), но исправлена одна ошибка программы. При оценивании этого задания на 1 балл допускается не учитывать корректность работы программ на точках границ областей (вместо нестрогих неравенств в решении были использованы строгие неравенства или наоборот) 1
Все пункты задания выполнены неверно (таблица анализа правильности алгоритма не приведена либо содержит ошибки в двух и более строках, программа не приведена либо ни одна из двух ошибок не ис- правлена) 0
Максимальный балл 3
25
На языке Паскаль На языке Бейсик
к := 0; for i:=l to N do if (a[i] > 9) and (a[i] < 100) then к := к + 1; if к > 0 then writein('YES') else writein(' NO') К = 0 FOR I = 1 ТО N IF А(1) >= 10 AND А(1) <= 99 THEN К = К + 1 ENDIF NEXT I IF К > 0 THEN PRINT "YES" ELSE PRINT "NO" ENDIF
На языке СИ На алгоритмическом языке
к = 0; for(i=0 ; i<N ; i++) if (a[i] > 9 && a[i] < 100) k++; if(k > 0) printf("YES"); else printf("NO"); k := 0 нц для i от 1 до N если a[i] >= 10 и a[i] <=99 ТО к := к + 1 все КЦ если к > 0 то вывод 'YES' иначе вывод 'NO' все все
На естественном языке
Записываем в переменную К начальное значение, равное нулю. В цикле перебираем все элементы с 1-го до 40-го. Если значение текущего элемента массива больше девяти и меньше ста, увеличиваем значение переменной К на 1. После окончания цикла: если значение переменной К больше нуля, выводим на экран «YES», иначе выводим на экран «NO».
26
Содержание верного ответа (допускаются иные формулировки ответа, не искажающие его смысла)
Выигрывает второй игрок.
Для доказательства рассмотрим неполное дерево игры, оформленное в виде таблицы, где в каждой
ячейке записаны координаты фишки на каждом этапе игры.
1-й ход 2-й ход 3-й ход 4-й ход
Стартовая позиция I игрок(все варианты хода) II игрок (выигрышный ход) I игрок (все варианты хода) II игрок (выигрышный ход, один из вариантов)
1,0 4,0 7,3 10, 3 13,6
10,6 13,6
7, 6 10,9
4,3 7,3 10,3 13,6
10,6 13,6
7,6 10,9
1,3 4,6 7,6 10,9
7,9 10,9
4,9 7, 12
Таблица содержит все возможные варианты ходов первого игрока. Из нее видно, что при любом ходе
первого игрока у второго имеется ход, приводящий к победе.
27
var
i, a, b, s, al, bl, a2, N : integer;
begin
a := 0; // кратчайшее расстояние от пункта R до "текущего" съезда
// на дорогу-связку с дороги А
b := 0; // кратчайшее расстояние от пункта R до "текущего" съезда
//на дорогу-связку с дороги В
readln(N);
for i := 1 to N do
begin
readln(al,bl,s);
if a + al < b + bl + s then // если до следующего съезда с дороги А
// быстрее проехать по дороге А,
// чем проехать по дороге В и переехать по дороге-связке
а2 := а + al // запомним это расстояние
else // иначе
а2 := b + Ы + s; // запомним длину пути по дороге В
if b + Ы < а + al + s then // если до следующего съезда с дороги В
// быстрее проехать по дороге В,
// чем проехать по дороге А и переехать по дороге-связке
b := b + Ы // запомним это расстояние
else // иначе
b:=a+al+s; // запомним длину пути по дороге А
а := а2 //в переменную а запишем временно хранящийся в а2 результат
end;
if а < b then
writein(а)
else
writein(b)
end.
Учебное издание
Серия «ЕГЭ-2018. Большой сборник тренировочных вариантов»
Ушаков Денис Михайлович
ЕГЭ-2018
ИНФОРМАТИКА
20 тренировочных вариантов экзаменационных работ
для подготовки к единому государственному экзамену
Редакция «Образовательные проекты»
Ответственный редактор Н.А. Шармай
Компьютерная вёрстка Л.А. Быкова
Технический редактор Е.П. Кудиярова
Подписано в печать 25.06.2017.
Формат 60x84 '/s- Усл. печ. л. 22,0.
Тираж 8 000 экз. Заказ № 5828.
Общероссийский классификатор продукции ОК-005-93, том 2; 953005 — литература учебная
ООО «Издательство АСТ». 129085, г. Москва, Звёздный бульвар, д. 21, стр. 1, комн. 39
Наш электронный адрес: www.ast.ru, e-mail: stelliferovskiy@ast.ru
Мы в социальных сетях. Присоединяйтесь!
https://vk.com/AST_planetadetstva
https://www.instagram.com/AST_planetadetstva
https://www.facebook.com/ASTplanetadetstva
По вопросам приобретения книг обращаться по адресу:
123317, г. Москва, Пресненская наб., д. 6, стр. 2,
Деловой комплекс «Империя», а/я № 5
Отпечатано в АО «Первая Образцовая типография»,
филиал «УЛЬЯНОВСКИЙ ДОМ ПЕЧАТИ». 432980, г. Ульяновск, ул. Гончарова, 14