P
pro·school.ru
Каталог школ
💻 ЕГЭ · Информатика · ФИПИ · 2019

Демоверсия ЕГЭ 2019 по информатике от ФИПИ — задания, ответы и критерии

Официальный демонстрационный вариант КИМ ЕГЭ 2019 года по информатике, опубликованный ФИПИ: 27 заданий, 3 ч 55 мин на выполнение, максимум 35 первичных баллов. Ниже — PDF для скачивания и просмотра, текст заданий, ответы и критерии оценивания части 2.

27заданий
3 ч 55 минна выполнение
35первичных баллов
26страниц PDF
Просмотр PDF: ИНФ_ДЕМО 2019Открыть в новой вкладке ↗

Задания демоверсии ЕГЭ 2019 по информатике — текст

Текст извлечён из официального PDF ФИПИ автоматически: формулы, таблицы и рисунки могут отображаться неточно — сверяйтесь с документом выше.

Единый государственный экзамен по ИНФОРМАТИКЕ и ИКТ

Демонстрационный вариант контрольных измерительных материалов единого государственного экзамена 2019 года по информатике и ИКТ подготовлен Федеральным государственным бюджетным научным учреждением «ФЕДЕРАЛЬНЫЙ ИНСТИТУТ ПЕДАГОГИЧЕСКИХ ИЗМЕРЕНИЙ»

ИНФОРМАТИКА и

Единый государственный экзамен по ИНФОРМАТИКЕ и ИКТ Пояснения к демонстрационному варианту контрольных измерительных материалов единого государственного экзамена 2019 года по ИНФОРМАТИКЕ и ИКТ При ознакомлении с демонстрационным вариантом контрольных измерительных материалов (КИМ) ЕГЭ 2019 г. следует иметь в виду, что задания, включённые в него, не отражают всех вопросов содержания, которые будут проверяться с помощью вариантов КИМ в 2019 г. Полный перечень вопросов, которые могут контролироваться на ЕГЭ 2019 г., приведён в кодификаторе элементов содержания и требований к уровню подготовки выпускников образовательных организаций для проведения единого государственного экзамена 2019 г. по информатике и ИКТ. Назначение демонстрационного варианта заключается в том, чтобы дать возможность любому участнику ЕГЭ и широкой общественности составить представление о структуре будущих КИМ, количестве заданий, об их форме и уровне сложности. Приведённые критерии оценки выполнения заданий с развёрнутым ответом, включённые в этот вариант, дают представление о требованиях к полноте и правильности записи развёрнутого ответа. Эти сведения позволят выпускникам выработать стратегию подготовки к ЕГЭ.

Российской Федерации

ИНФОРМАТИКА и

Единый государственный экзамен по ИНФОРМАТИКЕ и ИКТ Инструкция по выполнению работы Экзаменационная работа состоит из двух частей, включающих в себя 27 заданий. Часть 1 содержит 23 задания с кратким ответом. Часть 2 содержит 4 задания с развёрнутым ответом. На выполнение экзаменационной работы по информатике и ИКТ отводится 3 часа 55 минут (235 минут). Ответы к заданиям 1–23 нужно записать в виде числа, последовательности букв или цифр. Ответ запишите в поле ответа в тексте работы, а затем перенесите в бланк ответов №

1. КИМ

Ответ: 23. Задания 24–27 требуют развёрнутого решения. В бланке ответов № 2 укажите номер задания и запишите его полное решение. Все бланки ЕГЭ заполняются яркими чёрными чернилами. Допускается использование гелевой или капиллярной ручки. При выполнении заданий можно пользоваться черновиком. Записи в черновике, а также в тексте контрольных измерительных материалов не учитываются при оценивании работы. Баллы, полученные Вами за выполненные задания, суммируются. Постарайтесь выполнить как можно больше заданий и набрать наибольшее количество баллов. После завершения работы проверьте, чтобы ответ на каждое задание в бланках ответов № 1 и № 2 был записан под правильным номером. Желаем успеха!

Российской Федерации

ИНФОРМАТИКА и

В экзаменационных заданиях используются следующие соглашения. 1. Обозначения для логических связок (операций): a) отрицание (инверсия, логическое НЕ) обозначается ¬ (например, ¬А); b) конъюнкция (логическое умножение, логическое И) обозначается /\ (например, А /\ В) либо & (например, А & В); c) дизъюнкция (логическое сложение, логическое ИЛИ) обозначается \/ (например, А \/ В) либо | (например, А | В); d) следование (импликация) обозначается → (например, А → В); e) тождество обозначается ≡ (например, A ≡ B). Выражение A ≡ B истинно тогда и только тогда, когда значения A и B совпадают (либо они оба истинны, либо они оба ложны); f) символ 1 используется для обозначения истины (истинного высказывания); символ 0 – для обозначения лжи (ложного высказывания). 2. Два логических выражения, содержащих переменные, называются равносильными (эквивалентными), если значения этих выражений совпадают при любых значениях переменных. Так, выражения А → В и (¬А) \/ В равносильны, а А \/ В и А /\ В неравносильны (значения выражений разные, например, при А = 1, В = 0). 3. Приоритеты логических операций: инверсия (отрицание), конъюнкция (логическое умножение), дизъюнкция (логическое сложение), импликация (следование), тождество. Таким образом, ¬А /\ В \/ С /\ D означает то же, что и ((¬А) /\ В) \/ (С /\ D). Возможна запись А /\ В /\ С вместо (А /\ В) /\ С. То же относится и к дизъюнкции: возможна запись А \/ В \/ С вместо (А \/ В) \/ С.

4. Обозначения

Мбайт и Кбайт используются в традиционном для информатики смысле – как обозначения единиц измерения, чьё соотношение с единицей «байт» выражается степенью двойки.

Российской Федерации

ИНФОРМАТИКА и

Часть 1 Ответами к заданиям 1–23 являются число, последовательность букв или цифр, которые следует записать в БЛАНК ОТВЕТОВ № 1 справа от номера соответствующего задания, начиная с первой клеточки, без пробелов, запятых и других дополнительных символов. Каждый символ пишите в отдельной клеточке в соответствии с приведёнными в бланке образцами. 1

Вычислите значение выражения 9E16 – 9416. В ответе запишите вычисленное значение в десятичной системе счисления. Ответ: ___________________________.

Миша заполнял таблицу истинности функции (¬x /\ ¬y) \/ (y≡z) \/ ¬w, но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных w, x, y, z. 0 0

(¬x /\ ¬y) \/ (y≡z) \/ ¬w 0 0 0

Определите, какому столбцу таблицы соответствует каждая из переменных w, x, y, z. В ответе напишите буквы w, x, y, z в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу, и т.д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно. Пример. Если бы функция была задана выражением ¬x \/ y, зависящим от двух переменных, а фрагмент таблицы имел бы вид ¬x \/ y 0 то первому столбцу соответствовала бы переменная y, а второму столбцу – переменная x. В ответе следовало бы написать yx. 0

Ответ: ___________________________.

Российской Федерации

ИНФОРМАТИКА и

На рисунке слева изображена схема дорог Н-ского района, в таблице звёздочкой обозначено наличие дороги из одного населённого пункта в другой. Отсутствие звёздочки означает, что такой дороги нет. 1 1 2 3 4 5 6 7

* * * *

7 * *

* * *

* * *

Каждому населённому пункту на схеме соответствует его номер в таблице, но неизвестно, какой именно номер. Определите, какие номера населённых пунктов в таблице могут соответствовать населённым пунктам B и C на схеме. В ответе запишите эти два номера в возрастающем порядке без пробелов и знаков препинания. Ответ: ___________________________.

Российской Федерации

ИНФОРМАТИКА и

Ниже представлены два фрагмента таблиц из базы данных о жителях микрорайона. Каждая строка таблицы 2 содержит информацию о ребёнке и об одном из его родителей. Информация представлена значением поля ID в соответствующей строке таблицы 1. На основании приведённых данных определите наибольшую разницу между годами рождения родных сестёр. При вычислении ответа учитывайте только информацию из приведённых фрагментов таблиц. Примечание. Братьев (сестёр) считать родными, если у них есть хотя бы один общий родитель. ID 64 66 67 68 69 70 72 75 77 81 82 86 88 89 …

Таблица 1 Фамилия_И.О. Пол Год_рождения Келдыш С.М. М 1989 Келдыш О.Н. Ж 1964 Келдыш М.И. М 1962 Дейнеко Е.В. Ж 1974 Дейнеко Н.А. Ж 1994 Сиротенко В.Н. М 1966 Сиротенко Д.В. Ж 1995 Сиротенко Н.П. М 1937 Мелконян А.А. М 1987 Мелконян И.Н. Ж 1963 Лурье А.В. Ж 1989 Хитрово Н.И. М 1940 Хитрово Т.Н. Ж 1968 Гурвич З.И. Ж 1940 … … …

Таблица 2 ID_Родителя ID_Ребёнка 66 64 67 64 86 66 81 69 75 70 89 70 70 72 88 72 81 77 75 81 89 81 70 82 88 82 86 88 … …

Ответ: ___________________________. 5

Для кодирования некоторой последовательности, состоящей из букв А, Б, В, Г, Д, Е, решили использовать неравномерный двоичный код, удовлетворяющий условию Фано. Для буквы А использовали кодовое слово 0; для буквы Б – кодовое слово 10. Какова наименьшая возможная сумма длин кодовых слов для букв В, Г, Д, Е? Примечание. Условие Фано означает, что никакое кодовое слово не является началом другого кодового слова. Это обеспечивает возможность однозначной расшифровки закодированных сообщений. Ответ: ___________________________. Российской Федерации

ИНФОРМАТИКА и

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом. 1) Строится двоичная запись числа N. 2) К этой записи дописываются справа ещё два разряда по следующему правилу: если N чётное, в конец числа (справа) дописывается сначала ноль, а затем единица. В противном случае, если N нечётное, справа дописывается сначала единица, а затем ноль. Например, двоичная запись 100 числа 4 будет преобразована в 10001, а двоичная запись 111 числа 7 будет преобразована в 11110. Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью числа R – результата работы данного алгоритма. Укажите минимальное число R, которое больше 102 и может являться результатом работы данного алгоритма. В ответе это число запишите в десятичной системе счисления. Ответ: ___________________________.

Дан фрагмент электронной таблицы. Из ячейки C3 в ячейку D4 была скопирована формула. При копировании адреса ячеек в формуле автоматически изменились. Каким стало числовое значение формулы в ячейке D4? А

=$B$3+D2

Примечание. Знак $ обозначает абсолютную адресацию. Ответ: ___________________________.

Российской Федерации

ИНФОРМАТИКА и

Запишите число, которое будет напечатано в результате выполнения следующей программы. Для Вашего удобства программа представлена на пяти языках программирования. Бейсик Python DIM S, N AS INTEGER S = 0 N = 75 WHILE S + N < 150 S = S + 15 N = N - 5 WEND PRINT N

s = 0 n = 75 while s + n < 150: s = s + 15 n = n - 5 print(n)

Алгоритмический язык

Паскаль

алг нач цел n, s s := 0 n := 75 нц пока s + n < 150 s := s + 15 n := n - 5 кц вывод n кон

var s, n: integer; begin s := 0; n := 75; while s + n < 150 do begin s := s + 15; n := n - 5 end; writeln(n) end.

С++ #include <iostream> using namespace std; int main() { int s = 0, n = 75; while (s + n < 150) { s = s + 15; n = n - 5; } cout << n << endl; return 0; }

Ответ: ___________________________. 9

Автоматическая камера производит растровые изображения размером 200×256 пикселей. Для кодирования цвета каждого пикселя используется одинаковое количество бит, коды пикселей записываются в файл один за другим без промежутков. Объём файла с изображением не может превышать 65 Кбайт без учёта размера заголовка файла. Какое максимальное количество цветов можно использовать в палитре? Ответ: ___________________________. Российской Федерации

ИНФОРМАТИКА и

Вася составляет 5-буквенные слова, в которых есть только буквы З, И, М, А, причём в каждом слове есть ровно одна гласная буква и она встречается ровно 1 раз. Каждая из допустимых согласных букв может встречаться в слове любое количество раз или не встречаться совсем. Словом считается любая допустимая последовательность букв, не обязательно осмысленная. Сколько существует таких слов, которые может написать Вася? Ответ: ___________________________.

Ниже на пяти языках программирования записан рекурсивный алгоритм F. Бейсик

Python

SUB F(n) IF n > 0 THEN F(n - 1) PRINT n F(n - 2) END IF END SUB

def F(n): if n > 0: F(n - 1) print(n) F(n - 2)

Алгоритмический язык

Паскаль

алг F(цел n) нач если n > 0 то F(n - 1) вывод n F(n - 2) все кон

procedure F(n: integer); begin if n > 0 then begin F(n - 1); write(n); F(n - 2) end end;

С++ void F(int n){ if (n > 0){ F(n - 1); std::cout << n; F(n - 2); } }

Запишите подряд без пробелов и разделителей все числа, которые будут напечатаны на экране при выполнении вызова F(4). Числа должны быть записаны в том же порядке, в котором они выводятся на экран. Ответ: ___________________________.

Российской Федерации

ИНФОРМАТИКА и

В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам, что и IP-адрес, – в виде четырёх байтов, причём каждый байт записывается в виде десятичного числа. При этом в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого разряда – нули. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске. Например, если IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 231.32.240.0. Для узла с IP-адресом 117.191.37.84 адрес сети равен 117.191.37.80. Чему равно наименьшее возможное значение последнего (самого правого) байта маски? Ответ запишите в виде десятичного числа. Ответ: ___________________________.

При регистрации в компьютерной системе каждому пользователю выдаётся пароль, состоящий из 7 символов и содержащий только символы из 26-символьного набора прописных латинских букв. В базе данных для хранения сведений о каждом пользователе отведено одинаковое и минимально возможное целое число байт. При этом используют посимвольное кодирование паролей, все символы кодируют одинаковым и минимально возможным количеством бит. Кроме собственно пароля, для каждого пользователя в системе хранятся дополнительные сведения, для чего выделено целое число байт; это число одно и то же для всех пользователей. Для хранения сведений о 30 пользователях потребовалось 600 байт. Сколько байт выделено для хранения дополнительных сведений об одном пользователе? В ответе запишите только целое число – количество байт. Ответ: ___________________________.

Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр. А) заменить (v, w). Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды заменить (111, 27) преобразует строку 05111150 в строку 0527150.

Российской Федерации

ИНФОРМАТИКА и

Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку. Б) нашлось (v). Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется. Цикл ПОКА условие последовательность команд КОНЕЦ ПОКА выполняется, пока условие истинно. В конструкции ЕСЛИ условие ТО команда1 КОНЕЦ ЕСЛИ выполняется команда1 (если условие истинно). В конструкции ЕСЛИ условие ТО команда1 ИНАЧЕ команда2 КОНЕЦ ЕСЛИ выполняется команда1 (если условие истинно) или команда2 (если условие ложно). Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 82 идущих подряд цифр 1? В ответе запишите полученную строку. НАЧАЛО ПОКА нашлось (11111) ИЛИ нашлось (888) ЕСЛИ нашлось (11111) ТО заменить (11111, 88) ИНАЧЕ ЕСЛИ нашлось (888) ТО заменить (888, 8) КОНЕЦ ЕСЛИ КОНЕЦ ЕСЛИ КОНЕЦ ПОКА КОНЕЦ Ответ: ___________________________.

Российской Федерации

ИНФОРМАТИКА и

На рисунке представлена схема дорог, связывающих города А, Б, В, Г, Д, Е, Ж, З, И, К, Л, М. По каждой дороге можно двигаться только в одном направлении, указанном стрелкой. Сколько существует различных путей из города А в город М, проходящих через город Л?

Ответ: ___________________________.

Значение арифметического выражения 97 + 321 – 9 записали в системе счисления с основанием 3. Сколько цифр «2» содержится в этой записи? Ответ: ___________________________.

Российской Федерации

ИНФОРМАТИКА и

В языке запросов поискового сервера для обозначения логической операции «ИЛИ» используется символ «|», а для обозначения логической операции «И» – символ «&». В таблице приведены запросы и количество найденных по ним страниц некоторого сегмента сети Интернет. Запрос Горло Корабль Нос Корабль & Нос Горло & Нос Горло & Корабль

Найдено страниц (в сотнях тысяч) 35 35 40 20 13 0

Какое количество страниц (в сотнях тысяч) будет найдено по запросу Горло | Корабль | Нос? Считается, что все запросы выполнялись практически одновременно, так что набор страниц, содержащих все искомые слова, не изменялся за время выполнения запросов. Ответ: ___________________________.

Для какого наибольшего целого неотрицательного числа А выражение (48 ≠ y + 2x) \/ (A < x) \/ (A < y) тождественно истинно, т.е. принимает значение 1 при любых целых неотрицательных x и y? Ответ: ___________________________.

Российской Федерации

ИНФОРМАТИКА и

В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 2, 4, 3, 6, 3, 7, 8, 2, 9, 1 соответственно, т.е. A[0] = 2, A[1] = 4 и т.д. Определите значение переменной c после выполнения следующего фрагмента этой программы, записанного ниже на пяти языках программирования. Бейсик

Python

c = 0 FOR i = 1 TO 9 IF A(i-1) < A(i) THEN c = c + 1 t = A(i) A(i) = A(i-1) A(i-1) = t END IF NEXT i

c = 0 for i in range(1, 10): if A[i-1] < A[i]: c = c + 1 A[i-1], A[i] = A[i], A[i-1]

Алгоритмический язык

Паскаль

c := 0 нц для i от 1 до 9 если A[i-1] < A[i] то c := c + 1 t := A[i] A[i] := A[i-1] A[i-1] := t все кц

c := 0; for i := 1 to 9 do if A[i-1] < A[i] then begin c := c + 1; t := A[i]; A[i] := A[i-1]; A[i-1] := t; end;

С++ c = 0; for (int i = 1; i < 10; i++) if (A[i-1] < A[i]){ c++; t = A[i]; A[i] = A[i-1]; A[i-1] = t; }

Ответ: ___________________________.

Российской Федерации

ИНФОРМАТИКА и

Ниже на пяти языках программирования записан алгоритм. Получив на вход натуральное десятичное число x, этот алгоритм печатает два числа: L и M. Укажите наибольшее число x, при вводе которого алгоритм печатает сначала 21, а потом

3. Бейсик

Python

DIM X, L, M AS INTEGER INPUT X L = 1 M = 0 WHILE X > 0 M = M + 1 IF X MOD 2 <> 0 THEN L = L * (X MOD 8) END IF X = X \ 8 WEND PRINT L PRINT M

x = int(input()) L = 1 M = 0 while x > 0: M = M + 1 if x % 2 != 0: L = L * (x % 8) x = x // 8 print(L) print(M)

Алгоритмический язык

Паскаль

алг нач цел x, L, M ввод x L := 1 M := 0 нц пока x > 0 M := M + 1 если mod(x,2) <> 0 то L := L * mod(x,8) все x := div(x,8) кц вывод L, нс, M кон

var x, L, M: integer; begin readln(x); L := 1; M := 0; while x > 0 do begin M := M + 1; if x mod 2 <> 0 then L := L * (x mod 8); x := x div 8 end; writeln(L); writeln(M) end.

Российской Федерации

ИНФОРМАТИКА и

С++ #include <iostream> using namespace std; int main(){ int x, L, M; cin >> x; L = 1; M = 0; while (x > 0) { M = M + 1; if(x % 2 != 0) { L = L * (x % 8); } x = x / 8; } cout << L << endl << M << endl; return 0; }

Ответ: ___________________________. 21

Определите число, которое будет напечатано в результате выполнения следующего алгоритма. Для Вашего удобства алгоритм представлен на пяти языках программирования. Примечание. Функции abs и iabs возвращают абсолютное значение своего входного параметра. Бейсик

DIM A, B, T, M, R AS LONG A = -20: B = 20 M = A: R = F(A) FOR T = A TO B IF F(T) <= R THEN M = T R = F(T) END IF NEXT T PRINT M + R FUNCTION F(x) F = abs(abs(x - 6) + abs(x + 6) - 16) + 2 END FUNCTION

Российской Федерации

Python

ИНФОРМАТИКА и

def F(x): return abs(abs(x - 6) + abs(x + 6) - 16) + 2

a = -20 b = 20 M = a R = F(a) for t in range(a, b + 1): if (F(t) <= R): M = t R = F(t) print (M + R) Алгоритмический алг нач язык цел a, b, t, M, R a := -20; b := 20 M := a; R := F(a) нц для t от a до b если F(t) <= R то M := t; R := F(t) все кц вывод M + R кон алг цел F(цел x) нач знач := iabs(iabs(x - 6) + iabs(x + 6) - 16) + 2 кон var a, b, t, M, R : longint; Паскаль function F(x: longint) : longint; begin F := abs(abs(x - 6) + abs(x + 6) - 16) + 2; end; begin a := -20; b := 20; 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 + R) end.

Российской Федерации

ИНФОРМАТИКА и

#include <iostream> using namespace std; long F(long x) { return abs(abs(x - 6) + abs(x + 6) - 16) + 2; } int main() { long a = -20, b = 20, M = a, R = F(a); for (int t = a; t <= b; ++t) { if (F(t) <= R) { M = t; R = F(t); } } cout << M + R; return 0; }

Ответ: ___________________________.

Исполнитель Вычислитель преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера: 1. Прибавить 2 2. Умножить на 2 3. Прибавить 3 Первая из них увеличивает число на экране на 2, вторая умножает его на 2, третья увеличивает его на

3. Программа для

Вычислителя – это последовательность команд. Сколько существует таких программ, которые преобразуют исходное число 2 в число 22 и при этом траектория вычислений программы содержит число 11? Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Например, для программы 123 при исходном числе 7 траектория будет состоять из чисел 9, 18, 21. Ответ: ___________________________.

Российской Федерации

ИНФОРМАТИКА и

Сколько существует различных наборов значений логических переменных x1, x2, … x7, y1, y2, … y7, которые удовлетворяют всем перечисленным ниже условиям? (y1 → (y2 /\ x1)) /\ (x1 → x2) = 1 (y2 → (y3 /\ x2)) /\ (x2 → x3) = 1 … (y6 → (y7 /\ x6)) /\ (x6 → x7) = 1 y7 → x7 = 1 В ответе не нужно перечислять все различные наборы значений переменных x1, x2, … x7, y1, y2, … y7, при которых выполнена данная система равенств. В качестве ответа Вам нужно указать количество таких наборов. Ответ: ___________________________.

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

Российской Федерации

ИНФОРМАТИКА и

Часть 2 Для записи ответов на задания этой части (24–27) используйте БЛАНК ОТВЕТОВ № 2. Запишите сначала номер задания (24, 25 и т. д.), а затем полное решение. Ответы записывайте чётко и разборчиво.

На обработку поступает натуральное число, не превышающее 109. Нужно написать программу, которая выводит на экран минимальную чётную цифру этого числа. Если в числе нет чётных цифр, требуется на экран вывести «NO». Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования. Бейсик

Python

DIM N, DIGIT, MINDIGIT AS LONG INPUT N MINDIGIT = N MOD 10 WHILE N > 0 DIGIT = N MOD 10 IF DIGIT MOD 2 = 0 THEN IF DIGIT < MINDIGIT THEN MINDIGIT = DIGIT END IF END IF N = N \ 10 WEND IF MINDIGIT = 0 THEN PRINT "NO" ELSE PRINT MINDIGIT END IF

N = int(input()) minDigit = N % 10 while N > 0: digit = N % 10 if digit % 2 == 0: if digit < minDigit: minDigit = digit N = N // 10 if minDigit == 0: print("NO") else: print(minDigit)

Российской Федерации

ИНФОРМАТИКА и

Алгоритмический язык

Паскаль

алг нач цел N, digit, minDigit ввод N minDigit := mod(N,10) нц пока N > 0 digit := mod(N,10) если mod(digit, 2) = 0 то если digit < minDigit то minDigit := digit все все N := div(N,10) кц если minDigit = 0 то вывод "NO" иначе вывод minDigit все кон

var N,digit,minDigit: longint; begin readln(N); minDigit := N mod 10; while N > 0 do begin digit := N mod 10; if digit mod 2 = 0 then if digit < minDigit then minDigit := digit; N := N div 10; end; if minDigit = 0 then writeln('NO') else writeln(minDigit) end.

С++ #include <iostream> using namespace std; int main() { int N, digit, minDigit; cin >> N; minDigit = N % 10; while (N > 0) { digit = N % 10; if (digit % 2 == 0) if (digit < minDigit) minDigit = digit; N = N / 10; } if (minDigit == 0) cout << "NO" << endl; else cout << minDigit << endl; return 0; }

Российской Федерации

ИНФОРМАТИКА и

Последовательно выполните следующее. 1. Напишите, что выведет эта программа при вводе числа 231. 2. Приведите пример такого трёхзначного числа, при вводе которого приведённая программа, несмотря на ошибки, выдаёт верный ответ. 3. Найдите допущенные программистом ошибки и исправьте их. Исправление ошибки должно затрагивать только строку, в которой находится ошибка. Для каждой ошибки: 1) выпишите строку, в которой сделана ошибка; 2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки. Известно, что в тексте программы можно исправить ровно две строки так, чтобы она стала работать правильно. Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание на то, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. 25

Дан целочисленный массив из 30 элементов. Элементы массива могут принимать натуральные значения от 1 до 10 000 включительно. Опишите на одном из языков программирования алгоритм, который находит минимум среди элементов массива, не делящихся нацело на 6, а затем заменяет каждый элемент, не делящийся нацело на 6, на число, равное найденному минимуму. Гарантируется, что хотя бы один такой элемент в массиве есть. В качестве результата необходимо вывести изменённый массив, каждый элемент выводится с новой строчки. Например, для исходного массива из шести элементов: 14 6 11 18 9 24 программа должна вывести следующий массив 9 6 9 18 9 24

Российской Федерации

ИНФОРМАТИКА и

Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных. Бейсик

Python

CONST N AS INTEGER = 30 DIM A (1 TO N) AS LONG DIM I AS LONG, J AS LONG, K AS LONG

# допускается также # использовать две # целочисленные переменные j и k a = [] n = 30 for i in range(0, n): a.append(int(input())) ...

FOR I = 1 TO N INPUT A(I) NEXT I ... END

Алгоритмический язык

Паскаль

алг нач

const N = 30; var a: array [1..N] of longint; i, j, k: longint; begin for i := 1 to N do readln(a[i]); ...

цел N = 30 целтаб a[1:N] цел i, j, k нц для i от 1 до N ввод a[i] кц ... кон

end.

C++ #include <iostream> using namespace std; const int N = 30; int main() { long a[N]; long i, j, k; for (i = 0; i < N; i++) cin >> a[i]; ... return 0; }

В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например Free Pascal 2.6). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии (например, в образце, записанном на Алгоритмическом языке). Российской Федерации

ИНФОРМАТИКА и

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч (по своему выбору) один камень или увеличить количество камней в куче в три раза. Например, пусть в одной куче 10 камней, а в другой 7 камней; такую позицию в игре будем обозначать (10, 7). Тогда за один ход можно получить любую из четырёх позиций: (11, 7), (30, 7), (10, 8), (10, 21). Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда суммарное количество камней в кучах становится не менее 68. Победителем считается игрок, сделавший последний ход, т.е. первым получивший такую позицию, при которой в кучах будет 68 или больше камней. В начальный момент в первой куче было шесть камней, во второй куче – S камней; 1 ≤ S ≤ 61. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока – значит описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника. В описание выигрышной стратегии не следует включать ходы играющего по этой стратегии игрока, не являющиеся для него безусловно выигрышными, т.е. не являющиеся выигрышными независимо от игры противника. Выполните следующие задания. Задание 1 а) Укажите все такие значения числа S, при которых Петя может выиграть за один ход. б) Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение S, когда такая ситуация возможна. Задание 2 Укажите такое значение S, при котором у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; − Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Для указанного значения S опишите выигрышную стратегию Пети.

Российской Федерации

ИНФОРМАТИКА и

Задание 3 Укажите значение S, при котором одновременно выполняются два условия: − у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; − у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Для указанного значения S опишите выигрышную стратегию Вани. Постройте дерево всех партий, возможных при этой выигрышной стратегии Вани (в виде рисунка или таблицы). В узлах дерева указывайте позиции, на рёбрах рекомендуется указывать ходы. Дерево не должно содержать партии, невозможные при реализации выигрывающим игроком своей выигрышной стратегии. Например, полное дерево игры не является верным ответом на это задание.

Российской Федерации

ИНФОРМАТИКА и

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

29. Описание входных и выходных данных

В первой строке входных данных задаётся количество чисел N (4 ≤ N ≤ 1000). В каждой из последующих N строк записано одно целое положительное число, не превышающее 10 000. В качестве результата программа должна вывести одно число: количество пар элементов, находящихся в последовательности на расстоянии не меньше чем 4, в которых произведение элементов кратно 29. Пример входных данных: 7 58 2 3 5 4 1 29 Пример выходных данных для приведённого выше примера входных данных: 5 Пояснение. Из 7 заданных элементов с учётом допустимых расстояний между ними можно составить 6 произведений: 58·4, 58·1, 58·29, 2·1, 2·29, 3·29. Из них на 29 делятся 5 произведений. Требуется написать эффективную по времени и памяти программу для решения описанной задачи. Программа считается эффективной по времени, если при увеличении количества исходных чисел N в k раз время работы программы увеличивается не более чем в k раз. Программа считается эффективной по памяти, если память, необходимая для хранения всех переменных программы, не превышает 1 килобайта и не увеличивается с ростом N. Максимальная оценка за правильную (не содержащую синтаксических ошибок и дающую правильный ответ при любых допустимых входных данных) программу, эффективную по времени и памяти, – 4 балла. Максимальная оценка за правильную программу, эффективную только по времени, – 3 балла. Максимальная оценка за правильную программу, не удовлетворяющую требованиям эффективности, – 2 балла. Российской Федерации

ИНФОРМАТИКА и

Вы можете сдать одну программу или две программы решения задачи (например, одна из программ может быть менее эффективна). Если Вы сдадите две программы, то каждая из них будет оцениваться независимо от другой, итоговой станет бо́льшая из двух оценок. Перед текстом программы обязательно кратко опишите алгоритм решения. Укажите использованный язык программирования и его версию.

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

Российской Федерации

ИНФОРМАТИКА и

Ответы и критерии оценивания — показать

Официальная система оценивания ФИПИ. Сначала решите задания самостоятельно.

Система оценивания экзаменационной работы по информатике и ИКТ Часть 1 За правильный ответ на каждое из заданий 1–23 ставится 1 балл; за неверный ответ или его отсутствие – 0 баллов. Номер задания 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

Правильный ответ 10 zyxw 26 6 16 105 1100 35 1024 160 1231412 240 15 8811 28 12 77 15 7 499 10 100 36

Российской Федерации

ИНФОРМАТИКА и

Критерии оценивания заданий с развёрнутым ответом Часть 2

На обработку поступает натуральное число, не превышающее 109. Нужно написать программу, которая выводит на экран минимальную чётную цифру этого числа. Если в числе нет чётных цифр, требуется на экран вывести «NO». Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования. Бейсик

Python

DIM N, DIGIT, MINDIGIT AS LONG INPUT N MINDIGIT = N MOD 10 WHILE N > 0 DIGIT = N MOD 10 IF DIGIT MOD 2 = 0 THEN IF DIGIT < MINDIGIT THEN MINDIGIT = DIGIT END IF END IF N = N \ 10 WEND IF MINDIGIT = 0 THEN PRINT "NO" ELSE PRINT MINDIGIT END IF

N = int(input()) minDigit = N % 10 while N > 0: digit = N % 10 if digit % 2 == 0: if digit < minDigit: minDigit = digit N = N // 10 if minDigit == 0: print("NO") else: print(minDigit)

Российской Федерации

ИНФОРМАТИКА и

Алгоритмический язык

Паскаль

алг нач цел N, digit, minDigit ввод N minDigit := mod(N,10) нц пока N > 0 digit := mod(N,10) если mod(digit, 2) = 0 то если digit < minDigit то minDigit := digit все все N := div(N,10) кц если minDigit = 0 то вывод "NO" иначе вывод minDigit все кон

var N,digit,minDigit: longint; begin readln(N); minDigit := N mod 10; while N > 0 do begin digit := N mod 10; if digit mod 2 = 0 then if digit < minDigit then minDigit := digit; N := N div 10; end; if minDigit = 0 then writeln('NO') else writeln(minDigit) end.

С++ #include <iostream> using namespace std; int main() { int N, digit, minDigit; cin >> N; minDigit = N % 10; while (N > 0) { digit = N % 10; if (digit % 2 == 0) if (digit < minDigit) minDigit = digit; N = N / 10; } if (minDigit == 0) cout << "NO" << endl; else cout << minDigit << endl; return 0; }

Российской Федерации

ИНФОРМАТИКА и

Последовательно выполните следующее. 1. Напишите, что выведет эта программа при вводе числа 231. 2. Приведите пример такого трёхзначного числа, при вводе которого приведённая программа, несмотря на ошибки, выдаёт верный ответ. 3. Найдите допущенные программистом ошибки и исправьте их. Исправление ошибки должно затрагивать только строку, в которой находится ошибка. Для каждой ошибки: 1) выпишите строку, в которой сделана ошибка; 2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки. Известно, что в тексте программы можно исправить ровно две строки так, чтобы она стала работать правильно. Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание на то, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.

Российской Федерации

ИНФОРМАТИКА и

Содержание верного ответа и указания по оцениванию (допускаются иные формулировки ответа, не искажающие его смысла)

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

1. Программа выведет число

  • 1.
  • 2. Программа выдаёт правильный ответ, например, для числа 132. Замечание для проверяющего. Программа работает неправильно из-за неверной начальной инициализации и неверной проверки отсутствия чётных цифр. Соответственно, программа будет выдавать верный ответ, если вводимое число не содержит 0, содержит хотя бы одну чётную цифру и наименьшая чётная цифра числа не больше младшей (крайней правой) цифры числа (или просто стоит последней).
  • 3. В программе есть две ошибки. Первая ошибка: неверная инициализация ответа (переменная minDigit). Строка с ошибкой: minDigit := N mod 10; Верное исправление: minDigit := 10; Вместо 10 может быть использовано любое целое число, большее
  • 8. Вторая ошибка: неверная проверка отсутствия чётных цифр. Строка с ошибкой: if minDigit = 0 then Верное исправление: if minDigit = 10 then Вместо 10 может быть другое число, большее 8, которое было положено в minDigit при исправлении первой ошибки, или проверка, что minDigit > 8

Российской Федерации

ИНФОРМАТИКА и

Указания по оцениванию Баллы Обратите внимание! В задаче требовалось выполнить четыре действия: 1) указать, что выведет программа при конкретном входном числе; 2) указать пример входного числа, при котором программа выдаёт верный ответ; 3) исправить первую ошибку; 4) исправить вторую ошибку. Для проверки правильности выполнения п. 2) нужно формально выполнить исходную (ошибочную) программу с входными данными, которые указал экзаменуемый, и убедиться в том, что результат, выданный программой, будет таким же, как и для правильной программы. Для действий 3) и 4) ошибка считается исправленной, если выполнены оба следующих условия: а) правильно указана строка с ошибкой; б) указан такой новый вариант строки, что при исправлении другой ошибки получается правильная программа Выполнены все четыре необходимых действия, и ни одна верная 3 строка не указана в качестве ошибочной 2 Не выполнены условия, позволяющие поставить 3 балла. Имеет место одна из следующих ситуаций: а) выполнены три из четырёх необходимых действий. Ни одна верная строка не указана в качестве ошибочной; б) выполнены все четыре необходимых действия. Указано в качестве ошибочной не более одной верной строки Не выполнены условия, позволяющие поставить 2 или 3 балла. 1 Выполнены два из четырёх необходимых действия Не выполнены условия, позволяющие поставить 1, 2 или 3 балла 0 Максимальный балл 3

Российской Федерации

ИНФОРМАТИКА и

Дан целочисленный массив из 30 элементов. Элементы массива могут принимать натуральные значения от 1 до 10 000 включительно. Опишите на одном из языков программирования алгоритм, который находит минимум среди элементов массива, не делящихся нацело на 6, а затем заменяет каждый элемент, не делящийся нацело на 6, на число, равное найденному минимуму. Гарантируется, что хотя бы один такой элемент в массиве есть. В качестве результата необходимо вывести изменённый массив, каждый элемент выводится с новой строчки. Например, для исходного массива из шести элементов: 14 6 11 18 9 24 программа должна вывести следующий массив 9 6 9 18 9 24 Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных. Бейсик

Python

CONST N AS INTEGER = 30 DIM A (1 TO N) AS LONG DIM I AS LONG, J AS LONG, K AS LONG

# допускается также # использовать две # целочисленные переменные j и k a = [] n = 30 for i in range(0, n): a.append(int(input())) ...

FOR I = 1 TO N INPUT A(I) NEXT I ... END

Российской Федерации

ИНФОРМАТИКА и

Алгоритмический язык

Паскаль

алг нач

const N = 30; var a: array [1..N] of longint; i, j, k: longint; begin for i := 1 to N do readln(a[i]); ...

цел N = 30 целтаб a[1:N] цел i, j, k нц для i от 1 до N ввод a[i] кц ...

end.

C++ #include <iostream> using namespace std; const int N = 30; int main() { long a[N]; long i, j, k; for (i = 0; i < N; i++) cin >> a[i]; ... return 0; }

В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например Free Pascal 2.6). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии (например, в образце, записанном на Алгоритмическом языке). Содержание верного ответа и указания по оцениванию (допускаются иные формулировки ответа, не искажающие его смысла)

На языке Паскаль k := 10000; for i := 1 to N do if (a[i] mod 6 <> 0) and (a[i] < k) then k := a[i]; for i := 1 to N do begin if (a[i] mod 6 <> 0) then a[i] := k; writeln(a[i]); end;

Российской Федерации

ИНФОРМАТИКА и

На Алгоритмическом языке k := 10000 нц для i от 1 до N если mod(a[i], 6) <> 0 и a[i] < k то k := a[i] все кц нц для i от 1 до N если mod(a[i], 6) <> 0 то a[i] := k все вывод a[i], нс кц

На языке Бейсик K = 10000 FOR I = 1 TO N IF A(I) MOD 6 <> 0 AND A(I) < K THEN K = A(I) END IF NEXT I FOR I = 1 TO N IF A(I) MOD 6 <> 0 THEN A(I) = K END IF PRINT A(I) NEXT I

На языке С++ k = 10000; for (i = 0; i < N; i++) if (a[i] % 6 != 0 && a[i] < k) k = a[i]; for (i = 0; i < N; i++) { if (a[i] % 6 != 0) a[i] = k; cout << a[i] << endl; }

На языке Python k = 10000 for i in range(0, n): if (a[i] % 6 != 0 and a[i] < k): k = a[i] for i in range(0, n): if (a[i] % 6 != 0): a[i] = k print(a[i])

Российской Федерации

ИНФОРМАТИКА и

Указания по оцениванию Общие указания. 1. В алгоритме, записанном на языке программирования, допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора программы. 2. Эффективность алгоритма не имеет значения и не оценивается. 3. Допускается запись алгоритма на языке программирования, отличном от языков, приведённых в условии. В этом случае должны использоваться переменные, аналогичные описанным в условии. Если язык программирования использует типизированные переменные, описания переменных должны быть аналогичны описаниям переменных на Алгоритмическом языке. Использование нетипизированных или необъявленных переменных возможно только в случае, если это допускается языком программирования; при этом количество переменных и их идентификаторы должны соответствовать условию задачи.

4. Допускается формат вывода массива, отличный от указанного, например в строчку

Предложен правильный алгоритм, который изменяет исходный массив и выводит в качестве результата изменённый массив Не выполнены условия, позволяющие поставить 2 балла. При этом предложено в целом верное решение, содержащее не более одной ошибки из числа следующих: 1) в цикле происходит выход за границу массива; 2) не инициализируется или неверно инициализируется минимум; 3) неверно осуществляется проверка делимости на 6; 4) проверяется делимость на 6 не элемента массива, а его индекса; 5) в сравнении с минимумом перепутаны знаки «больше» и «меньше»; 6) сравнение с минимумом производится для индекса элемента массива, а не для его значения; 7) неверно составлено логическое условие (например, используется or вместо and); 8) исходный массив не изменяется; 9) изменяются не все требуемые элементы (например, только первый или последний из них); 10) отсутствует вывод ответа, или ответ выводится не полностью (например, только один элемент массива ввиду пропущенного цикла вывода элементов или операторных скобок); 11) используется переменная, не объявленная в разделе описания переменных;

Баллы

Российской Федерации

ИНФОРМАТИКА и

12) не указано или неверно указано условие завершения цикла; 13) индексная переменная в цикле не меняется (например, в цикле while) или меняется неверно Ошибок, перечисленных в п. 1–13, две или больше, или алгоритм сформулирован неверно (в том числе при отсутствии в явном или неявном виде цикла поиска нужного элемента) Максимальный балл

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч (по своему выбору) один камень или увеличить количество камней в куче в три раза. Например, пусть в одной куче 10 камней, а в другой 7 камней; такую позицию в игре будем обозначать (10, 7). Тогда за один ход можно получить любую из четырёх позиций: (11, 7), (30, 7), (10, 8), (10, 21). Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда суммарное количество камней в кучах становится не менее 68. Победителем считается игрок, сделавший последний ход, т.е. первым получивший такую позицию, при которой в кучах будет 68 или больше камней. В начальный момент в первой куче было шесть камней, во второй куче – S камней; 1 ≤ S ≤ 61. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока – значит описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника. В описание выигрышной стратегии не следует включать ходы играющего по этой стратегии игрока, не являющиеся для него безусловно выигрышными, т.е. не являющиеся выигрышными независимо от игры противника. Выполните следующие задания. Задание 1 а) Укажите все такие значения числа S, при которых Петя может выиграть за один ход. б) Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение S, когда такая ситуация возможна. Задание 2 Укажите такое значение S, при котором у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: − Петя не может выиграть за один ход; Российской Федерации

ИНФОРМАТИКА и

− Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Для указанного значения S опишите выигрышную стратегию Пети. Задание 3 Укажите значение S, при котором одновременно выполняются два условия: − у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; − у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Для указанного значения S опишите выигрышную стратегию Вани. Постройте дерево всех партий, возможных при этой выигрышной стратегии Вани (в виде рисунка или таблицы). В узлах дерева указывайте позиции, на рёбрах рекомендуется указывать ходы. Дерево не должно содержать партии, невозможные при реализации выигрывающим игроком своей выигрышной стратегии. Например, полное дерево игры не является верным ответом на это задание. Содержание верного ответа и указания по оцениванию (допускаются иные формулировки ответа, не искажающие его смысла)

Задание 1 а) Петя может выиграть при 21 ≤ S ≤ 61. б) S = 7. Задание 2 Возможное значение S: 20. В этом случае Петя, очевидно, не может выиграть первым ходом. Однако он может получить позицию (7, 20). После хода Вани может возникнуть одна из четырёх позиций: (8, 20), (21, 20), (7, 21), (7, 60). В каждой из этих позиций Петя может выиграть одним ходом, утроив количество камней во второй куче. Замечание для проверяющего. Ещё одно возможное значение S для этого задания – число 13. В этом случае Петя первым ходом должен утроить количество камней в меньшей куче и получить позицию (6 * 3, 13) = (18, 13). При такой позиции Ваня не может выиграть первым ходом, а после любого хода Вани Петя может выиграть, утроив количество камней в большей куче. Достаточно указать одно значение S и описать для него выигрышную стратегию. Задание 3 Возможное значение S:

19. После первого хода

Пети возможны позиции: (7, 19), (18, 19), (6, 20), (6, 57). В позициях (18, 19) и (6, 57) Ваня может выиграть первым ходом, утроив количество камней во второй куче. Из позиций (7, 19) и (6, 20) Ваня может получить позицию (7, 20). Эта позиция разобрана в п.

2. Игрок, который её получил (теперь это

Ваня), выигрывает своим вторым ходом. Российской Федерации

ИНФОРМАТИКА и

В таблице изображено дерево возможных партий (и только их) при описанной стратегии Вани. Заключительные позиции (в них выигрывает Ваня) выделены жирным шрифтом. На рисунке это же дерево изображено в графическом виде (оба способа изображения дерева допустимы). Положения после очередных ходов 1-й ход Пети (разобраны Исходное все ходы, положение указана полученная позиция)

1-й ход Вани (только ход по стратегии, указана полученная позиция)

(6, 19+1) = (6, 20) Всего: 26

(6+1, 20) = (7, 20) Всего: 27

(6+1, 19) = (7, 19) Всего: 26

(7, 19+1) = (7, 20) Всего: 27

(6*3, 19) = (18, 19) Всего: 37 (6, 19*3) = (6, 57) Всего: 63

(18, 19*3) = (18, 57) Всего: 75 (6, 57*3) = (6, 171) Всего: 177

(6, 19) Всего: 25

2-й ход Пети (разобраны все ходы, указана полученная позиция)

2-й ход Вани (только ход по стратегии, указана полученная позиция)

(7+1, 20) = (8, 20) Всего: 28 (7, 20+1) = (7, 21) Всего: 28 (7*3, 20) = (21, 20) Всего: 41 (7, 20*3) = (7, 60) Всего: 67 (7+1, 20) = (8, 20) Всего: 28 (7, 20+1) = (7, 21) Всего: 28 (7*3, 20) = (21, 20) Всего: 41 (7, 20*3) = (7, 60) Всего: 67

(8, 20*3) = (8, 60) Всего: 68 (7, 21*3) = (7, 63) Всего: 70 (21, 20*3) = (21, 60) Всего: 81 (7, 60*3) = (7, 180) Всего: 187 (8, 20*3) = (8, 60) Всего: 68 (7, 21*3) = (7, 63) Всего: 70 (21, 20*3) = (21, 60) Всего: 81 (7, 60*3) = (7, 180) Всего: 187

Российской Федерации

ИНФОРМАТИКА и

Примечание для эксперта. Дерево всех партий может быть также изображено в виде ориентированного графа – так, как показано на рисунке, или другим способом. Важно, чтобы множество полных путей в графе находилось во взаимно однозначном соответствии со множеством партий, возможных при описанной в решении стратегии.

Рис.

1. Дерево всех партий, возможных при

Ваниной стратегии. Ходы Пети показаны пунктиром; ходы Вани – сплошными линиями. Прямоугольником обозначены позиции, в которых партия заканчивается. Замечание для проверяющего. Не является ошибкой указание только одного заключительного хода выигрывающего игрока в ситуации, когда у него есть более одного выигрышного хода

Российской Федерации

ИНФОРМАТИКА и

Указания по оцениванию Баллы В задаче требуется выполнить три задания. Их трудность возрастает. Количество баллов в целом соответствует количеству выполненных заданий (подробнее см. ниже). Ошибка в решении, не искажающая основного замысла и не приведшая к неверному ответу, например арифметическая ошибка при вычислении количества камней в заключительной позиции, при оценке решения не учитывается. Задание 1 выполнено, если выполнены оба пункта: а) и б), т.е. для п. а) перечислены все значения S, удовлетворяющие условию (и только они), для п. б) указано верное значение S (и только оно). Задание 2 выполнено, если правильно указана позиция, выигрышная для Пети, и описана соответствующая стратегия Пети – так, как это сделано в примере решения, или другим способом, например с помощью дерева всех возможных при выбранной стратегии Пети партий (и только их). Задание 3 выполнено, если правильно указана позиция, выигрышная для Вани, и построено дерево всех возможных при Ваниной стратегии партий (и только их). Во всех случаях стратегии могут быть описаны так, как это сделано в примере решения, или другим способом Выполнены задания 1, 2 и 3 Не выполнены условия, позволяющие поставить 3 балла, и выполнено одно из следующих условий.

1. Выполнено задание

3. 2. Выполнены задания 1 и 2 Не выполнены условия, позволяющие поставить 3 или 2 балла, и выполнено одно из следующих условий.

1. Выполнено задание

  • 1.
  • 2. Выполнено задание 2 Не выполнено ни одно из условий, позволяющих поставить 3, 2 или 1 балл Максимальный балл

Российской Федерации

ИНФОРМАТИКА и

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

29. Описание входных и выходных данных

В первой строке входных данных задаётся количество чисел N (4 ≤ N ≤ 1000). В каждой из последующих N строк записано одно целое положительное число, не превышающее 10 000. В качестве результата программа должна вывести одно число: количество пар элементов, находящихся в последовательности на расстоянии не меньше чем 4, в которых произведение элементов кратно 29. Пример входных данных: 7 58 2 3 5 4 1 29 Пример выходных данных для приведённого выше примера входных данных: 5 Пояснение. Из 7 заданных элементов с учётом допустимых расстояний между ними можно составить 6 произведений: 58·4, 58·1, 58·29, 2·1, 2·29, 3·29. Из них на 29 делятся 5 произведений. Требуется написать эффективную по времени и памяти программу для решения описанной задачи. Программа считается эффективной по времени, если при увеличении количества исходных чисел N в k раз время работы программы увеличивается не более чем в k раз. Программа считается эффективной по памяти, если память, необходимая для хранения всех переменных программы, не превышает 1 килобайта и не увеличивается с ростом N. Максимальная оценка за правильную (не содержащую синтаксических ошибок и дающую правильный ответ при любых допустимых входных данных) программу, эффективную по времени и памяти, – 4 балла. Максимальная оценка за правильную программу, эффективную только по времени, – 3 балла. Максимальная оценка за правильную программу, не удовлетворяющую требованиям эффективности, – 2 балла. Российской Федерации

ИНФОРМАТИКА и

Вы можете сдать одну программу или две программы решения задачи (например, одна из программ может быть менее эффективна). Если Вы сдадите две программы, то каждая из них будет оцениваться независимо от другой, итоговой станет бо́льшая из двух оценок. Перед текстом программы обязательно кратко опишите алгоритм решения. Укажите использованный язык программирования и его версию. Содержание верного ответа (допускаются иные формулировки ответа, не искажающие его смысла)

Произведение двух чисел делится на 29, если хотя бы один из сомножителей делится на 29. При вводе чисел можно подсчитывать количество чисел, кратных 29, не считая четырёх последних. Обозначим их n29. Примечание для проверяющего. Сами числа, кроме четырёх последних, при этом можно не хранить. Очередное считанное число будем рассматривать как возможный правый элемент искомой пары. Если очередное считанное число делится на 29, то к ответу следует прибавить количество чисел до него, не считая четырёх последних (включая считанное). Если очередное считанное число на 29 не делится, то к ответу следует прибавить n29. Чтобы построить программу, эффективную по памяти, заметим, что, поскольку при обработке очередного элемента входных данных используются значения, находящиеся на четыре элемента ранее, достаточно хранить только четыре последних элемента или информацию о них. Ниже приведена реализующая описанный алгоритм программа на языке Паскаль (использована версия PascalABC)

Российской Федерации

ИНФОРМАТИКА и

Пример

1. Программа на языке

Паскаль. Программа эффективна по времени и памяти const s = 4; {требуемое расстояние между элементами} var n: longint; a: array[1..s] of longint; {хранение последних s значений} a_: longint; {очередное значение} n29: longint; {количество делящихся на 29 элементов, не считая s последних} cnt: longint; {количество искомых пар} i, j: longint; begin readln(n); {Ввод первых s чисел} for i:=1 to s do readln(a[i]); {Ввод остальных значений, подсчет искомых пар} cnt := 0; n29 := 0; for i := s + 1 to n do begin if a[1] mod 29 = 0 then n29 := n29 + 1; readln(a_); if a_ mod 29 = 0 then cnt := cnt + i - s else cnt := cnt + n29; {сдвигаем элементы вспомогательного массива влево} for j := 1 to s - 1 do a[j] := a[j + 1]; a[s] := a_ {записываем текущий элемент в конец массива} end; writeln(cnt) end.

Комментарии для проверяющего 1. При таком решении хранятся только последние 4 прочитанных элемента. Таким образом, используемая память не зависит от длины последовательности. Время обработки очередного числа фиксировано, т.е. не зависит от длины последовательности. Поэтому при увеличении длины последовательности в k раз время работы программы увеличивается не более чем в k раз. Таким образом, приведённая выше программа эффективна как по времени, так и по используемой памяти. Это решение оценивается в 4 балла. В такой версии Паскаля, как PascalABC или Delphi, тип longint может быть заменён на тип integer. В большинстве версий языков C\C++ также можно использовать тип int. Программа может быть и ещё более эффективной, если на каждом шаге не сдвигать элементы вспомогательного массива, а записывать i-й считанный Российской Федерации

ИНФОРМАТИКА и

элемент в элемент с индексом i mod 4 (Паскаль) или i % 4 (Python), ведя нумерацию обоих индексов с нуля. Учёту подлежит элемент с этим же индексом (именно он находится на расстоянии s от i-го и будет заменён на него). Кроме того, при нумерации индексов элементов с нуля меняется одна из формул для подсчёта. Такая программа на языке Python приведена ниже (пример 2). Все подобные программы оцениваются, исходя из максимального балла – 4 (см. критерии). Вместо последних 4 элементов можно хранить и 4 счётчика: количество делящихся на 29 среди всех считанных чисел, всех считанных чисел без последнего, всех считанных чисел без 2 последних, всех считанных чисел без 3 последних, – и также сдвигать их после очередного шага. Такая программа приведена на языке С++ (пример 3). В этом же примере вместо вспомогательного массива длиной 4 используются 4 переменные. 2. Возможно решение, основанное на описанных идеях, однако предварительно сохраняющее элементы последовательности в массив. Такое решение эффективно по времени, но неэффективно по памяти. Оно оценивается, исходя из максимального балла – 3 (см. критерии). 3. Решение, неэффективное ни по времени, ни по памяти, запоминает входную последовательность в массиве, после чего явно перебирает все возможные пары. Такое решение оценивается, исходя из максимального балла – 2 (см. критерии). Пример 2. Программа на языке Python. Программа эффективна по времени и памяти s = 4 a = [0]*s n = int(input()) for i in range(s): a[i] = int(input()) cnt = 0 n29 = 0 for i in range(s, n): k = i % s if a[k] % 29 == 0: n29 = n29 + 1 a_ = int(input()) if a_ % 29 == 0: cnt = cnt + i - s + 1 else: cnt = cnt + n29 a[i % s] = a_ print(cnt)

Российской Федерации

ИНФОРМАТИКА и

Пример 3. Программа на языке С++. Программа эффективна по времени и памяти #include <iostream> using namespace std; int main() { int s = 4; //требуемое расстояние между элементами int n; int n1 = 0, n2 = 0, n3 = 0, n4 = 0; //хранение последних s счетчиков int a_; // очередное значение int cnt; // количество искомых пар cin >> n; cnt = 0; for (int i = 0; i < n; ++i) { cin >> a_; // считано очередное значение if (i >= s) { if (a_ % 29 == 0) cnt += i - s + 1; else cnt += n4; } //сдвигаем элементы счетчиков n4 = n3; n3 = n2; n2 = n1; //обновляем счетчик кратных 29 if (a_ % 29 == 0) n1 += 1; } cout << cnt; return 0; }

Российской Федерации

ИНФОРМАТИКА и

Указания по оцениванию Баллы Если в работе представлены две программы решения задачи, то каждая из них независимо оценивается по указанным ниже критериям, итоговой считается бо́льшая из двух оценок. Описание алгоритма решения без программы оценивается в 0 баллов 4 Программа правильно работает для любых входных данных произвольного размера при условии исправления в ней не более трёх синтаксических ошибок из приведённого ниже списка допустимых ошибок. Используемая память не зависит от количества прочитанных чисел, а время работы пропорционально этому количеству. Допускается наличие в тексте программы до трёх синтаксических ошибок одного из следующих видов: 1) пропущен или неверно указан знак пунктуации; 2) неверно написано, пропущено или написано лишнее зарезервированное слово языка программирования; 3) не описана или неверно описана переменная; 4) применяется операция, не допустимая для соответствующего типа данных. Если одна и та же ошибка встречается несколько раз, это считается за одну ошибку 3 Не выполнены условия, позволяющие поставить 4 балла. Программа работает правильно для любых входных данных произвольного размера при условии исправления в ней не более пяти синтаксических ошибок из приведённого в критериях на 4 балла списка и не более одной ошибки из приведённого ниже списка содержательных ошибок. Время работы пропорционально количеству введённых чисел. Допускается наличие не более одной содержательной (не являющейся синтаксической) ошибки следующих видов: 1) допущена ошибка при вводе данных, например не считывается значение N, или числа могут быть считаны, только если будут записаны в одной строке через пробел; 2) неверная инициализация или её отсутствие там, где она необходима; 3) используется неверный тип данных; 4) использована одна переменная (или константа) вместо другой; 5) используется один знак операции вместо другого; 6) используется одно зарезервированное слово языка программирования вместо другого; 7) неверно используется условный оператор, например else относится не к тому условию; 8) отсутствует вывод ответа, или выводится значение не той переменной; Российской Федерации

ИНФОРМАТИКА и

9) выход за границу массива; 10) неверно расставлены операторные скобки. 3 балла также ставится за программу, в которой нет содержательных ошибок, но используемая память зависит от количества прочитанных чисел (например, входные данные запоминаются в массиве, контейнере STL в C++ или другой аналогичной структуре данных) Пример

4. Программа на языке

Паскаль. Программа эффективна по времени и неэффективна по памяти const s = 4; {требуемое расстояние между элементами} var n: longint; a: array[1..1000] of longint; n29: longint; {количество делящихся на 29 элементов, не считая s последних} cnt: longint; {количество искомых пар} i, j: longint; begin readln(n); {Ввод первых s чисел} for i:=1 to s do readln(a[i]); {Ввод остальных значений, подсчет искомых пар} cnt := 0; n29 := 0; for i := s + 1 to n do begin readln(a[i]); if a[i - s] mod 29 = 0 then n29 := n29 + 1; if a[i] mod 29 = 0 then cnt := cnt + i - s else cnt := cnt + n29; end; writeln(cnt) end.

Показана часть текста. Полная версия — в PDF выше.

ЕГЭ 2019 по информатике — другие документы

Демоверсии ЕГЭ по информатикедругие годы