Вчера прошла основная волна ЕГЭ по информатике. Экзаменационная работа ничем не удивила, кроме 23-й задачи. Задача была не столько сложная, сколько необычная. Мне, например, она больше напомнила 10-ю задачу на элементы комбинаторики. Наверняка, будет предложено много самых разных решений. Предложу свое, которое возникло в голове при первом взгляде на задачу и заняло не более 10 минут (включая первый шок от прочтения).
Найти количество решений системы логических уравнений:
Где 1 ≤ i ≤ 8, 1 ≤ j ≤ 5;
Решим уравнение для i=1
Точно так же будет выглядеть решение для других значений i. Т.е. нам подойдут все наборы, кроме наборов:
Посчитаем общее число наборов и вычтем из него не подходящие. Это и будет ответом задачи.
Поскольку 1 ≤ i ≤ 8 ; 1 ≤ j ≤ 5, то общее число наборов равно
Наборы переменных , содержащие 10, это все наборы, кроме наборов:
Т.е. наборов.
Наборы переменных , содержащие 10 или 11, это все наборы, кроме наборов:
Т.е. наборов.
Наборы переменных , содержащие 11, но не содержащие 10 (т.к. мы их уже учли) это наборы:
Их 7 штук.
Наборы переменных , содержащие 10, это все наборы, кроме наборов:
Т.е. наборов.
Итак, ответ задачи: .
Благодарим за то, что пользуйтесь нашими материалами.
Информация на странице «ЕГЭ по информатике 2020. Как решалось задание 23!» подготовлена нашими авторами специально, чтобы помочь вам в освоении предмета и подготовке к экзаменам.
Чтобы успешно сдать нужные и поступить в ВУЗ или колледж нужно использовать все инструменты: учеба, контрольные, олимпиады, онлайн-лекции, видеоуроки, сборники заданий.
Также вы можете воспользоваться другими материалами из разделов нашего сайта.
Публикация обновлена:
10.02.2023
- Математика
- Информатика
- Математика
- Русский язык
- Английский
- Математика
- Русский язык
- Английский
- Математика
- Русский язык
- Английский
Вариант Москва
Ответы 1 часть
Решения 2 часть и сканы работы на полный балл
Мой канал подготовки к ЕГЭ по информатике «Flash»!
— бесплатные вебинары каждую неделю
— полезные видео о подготовке
— курсы и полезные материалы
Подписывайся!
егэ 2020 информатика варианты
егэ информатика ответы
варианты егэ по информатике
Решение 2 части
Работа на полный балл
Полезное
Реальные варианты ЕГЭ по информатике
Перейти
Вариант №2 черновик
Перейти
ЕГЭ по информатике 03.07.2020. Основная волна
При выполнении заданий с кратким ответом впишите в поле для ответа цифру, которая соответствует номеру правильного ответа, или число, слово, последовательность букв (слов) или цифр. Ответ следует записывать без пробелов и каких-либо дополнительных символов. Дробную часть отделяйте от целой десятичной запятой. Единицы измерений писать не нужно.
Если вариант задан учителем, вы можете вписать или загрузить в систему ответы к заданиям с развернутым ответом. Учитель увидит результаты выполнения заданий с кратким ответом и сможет оценить загруженные ответы к заданиям с развернутым ответом. Выставленные учителем баллы отобразятся в вашей статистике.
Версия для печати и копирования в MS Word
1
Найдите значение выражения 9F16 − 9416. Ответ укажите в десятичной системе счисления.
Ответ:
2
Логическая функция F задаётся выражением (x ∨ y) ∧ ¬(y ≡ z) ∧ ¬w. На рисунке приведён частично заполненный фрагмент таблицы истинности функции F, содержащий неповторяющиеся строки. Определите, какому столбцу таблицы истинности функции F соответствует каждая из переменных x, y, z, w.
Переменная 1 | Переменная 2 | Переменная 3 | Переменная 4 | Функция |
---|---|---|---|---|
1 | 1 | |||
0 | 0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 |
В ответе напишите буквы x, y, z, w в том порядке, в котором идут соответствующие им столбцы (сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Пример. Пусть задано выражение x → y, зависящее от двух переменных x и y, и фрагмент таблицы истинности:
Переменная 1 | Переменная 2 | Функция |
---|---|---|
??? | ??? | F |
0 | 1 | 0 |
Тогда первому столбцу соответствует переменная y, а второму столбцу соответствует переменная x. В ответе нужно написать: yx.
Ответ:
3
На рисунке слева изображена схема дорог Н-ского района, в таблице звёздочкой обозначено наличие дороги из одного населённого пункта в другой. Отсутствие звёздочки означает, что такой дороги нет. Определите, какие номера населённых пунктов в таблице могут соответствовать населённым пунктам Б и В на схеме. В ответ запишите без разделителей сначала номер пункта Б, потом номер пункта В.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
1 | * | * | * | |||||
2 | * | * | ||||||
3 | * | * | * | |||||
4 | * | * | * | |||||
5 | * | * | * | |||||
6 | * | * | * | |||||
7 | * | * | ||||||
8 | * | * | * |
Ответ:
4
Ниже представлены два фрагмента таблиц из базы данных о жителях микрорайона. Каждая строка таблицы 2 содержит информацию о ребёнке и об одном из его родителей. Информация представлена значением поля ID в соответствующей строке таблицы 1. Определите на основании приведённых данных, сколько жителей родились в том же городе, что и хотя бы один из их дедушек или хотя бы одна из их бабушек. При вычислении ответа учитывайте только информацию из приведённых фрагментов таблиц.
|
|
Ответ:
5
Для кодирования некоторой последовательности, состоящей только из букв А, Б, В, Г, Д, Е решили использовать неравномерный двоичный код, удовлетворяющий условию Фано. Для букв А, Б использовали соответственно кодовые слова 00, 01. Какова наименьшая возможная сумма длин кодовых букв В, Г, Д, Е, при котором код будет допускать однозначное декодирование.
Примечание. Условие Фано означает, что никакое кодовое слово не является началом другого кодового слова. Это обеспечивает возможность однозначной расшифровки закодированных сообщений.
Ответ:
6
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1) Строится двоичная запись числа N.
2) К этой записи дописываются разряды по следующему правилу:
а) если число четное, то к двоичной записи числа в конце дописываются 1 и 0;
б) если число нечетное, то к двоичной записи числа в конце дописывается 01.
Полученная таким образом запись является двоичной записью искомого числа R. Укажите наибольшее число R меньшее 109, которое может получиться после обработки этого алгоритма. В ответе это число запишите в десятичной системе.
Ответ:
7
Дан фрагмент электронной таблицы. Из ячейки E4 в ячейку D2 была скопирована формула. При копировании адреса ячеек в формуле автоматически изменились. Чему равно значение выражения D2 + E4?
A | B | C | D | E | |
---|---|---|---|---|---|
1 | 40 | 30 | 40 | 4 | 4 |
2 | 30 | 6 | 15 | 3 | |
3 | 20 | 8 | 15 | 15 | 2 |
4 | 10 | 23 | 28 | 17 | =$C4+E$3 |
Примечание: знак $ обозначает абсолютную адресацию.
Ответ:
8
Запишите число, которое будет напечатано в результате выполнения следующей программы. Для Вашего удобства программа представлена на пяти языках программирования.
Бейсик | Python |
---|---|
DIM S, N AS INTEGER S = 0 N = 90 WHILE S + N < 145 S = S + 20 N = N − 10 WEND PRINT S |
s = 0 n = 90 while s + n < 145: s = s + 20 n = n − 10 print(s) |
Паскаль | Алгоритмический язык |
var s, n: integer; begin s := 0; n := 90; while s + n < 145 do begin s := s + 20; n := n − 10; end; writeln(s) end. |
алг нач цел n, s s := 0 n := 90 нц пока s + n < 145 s := s + 20 n := n − 10 кц вывод s кон |
Си++ | |
#include <iostream> using namespace std; int main() { int s = 0, n = 90; while (s + n < 145) { s = s + 20; n = n − 10;} cout << s << endl; return 0; } |
Ответ:
9
Камера делает фотоснимки размером 250 × 300 пикселей. На хранение одного кадра отводится 40 Кбайт. Найдите максимально возможное количество цветов в палитре изображения.
Ответ:
10
Сколько существует шестизначных чисел, делящихся на 5, в которых каждая цифра может встречаться только один раз, при этом никакие две чётные и две нечётные цифры не стоят рядом.
Ответ:
11
Ниже на пяти языках программирования записан рекурсивный алгоритм F.
Бейсик | Python |
---|---|
SUB F(n) IF n > 2 THEN F(n 2) F(n − 1) PRINT N END IF END SUB |
def F(n): if n > 2: F(n // 2) F(n − 1) print(n) |
Паскаль | Алгоритмический язык |
procedure F(n: integer); begin if n > 2 then begin F(n div 2); F(n − 1); write(n); end end; |
алг F(цел n) нач если n > 2 то F(div(n,2)) F(n − 1) вывод n все кон |
С++ | |
void F (int n) { if (n > 2) { F (n / 2); F (n − 1); std::cout << n; } } |
Запишите подряд без пробелов и разделителей все числа, которые будут напечатаны на экране при выполнении вызова F(7). Числа должны быть записаны в том же порядке, в котором они выводятся на экран.
Ответ:
12
В терминологии сетей TCP/IP маска сети — это двоичное число, меньшее 232; в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам, что и IP-адрес — в виде четырёх байт, причём каждый байт записывается в виде десятичного числа. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.
Например, если IP-адрес узла равен 131.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 131.32.240.0.
Для узла с IP-адресом 117.191.208.37 адрес сети равен 117.191.192.0. Чему равно наименьшее возможное значение третьего слева байта маски сети?
Ответ:
13
При регистрации в компьютерной системе каждому пользователю выдаётся пароль, состоящий из 11 символов и содержащий только прописные буквы латинского 26-символьного алфавита и десять цифр. В базе данных для хранения сведений о каждом пользователе отведено одинаковое и минимально возможное целое число байт. При этом используют посимвольное кодирование паролей, все символы кодируют одинаковым и минимально возможным количеством бит. Кроме собственно пароля, для каждого пользователя в системе хранятся дополнительные сведения, для чего выделено целое число байт; это число одно и то же для всех пользователей. Для хранения сведений о 30 пользователях потребовалось 750 байт.
Сколько байт выделено для хранения дополнительных сведений об одном пользователе? В ответе запишите только целое число — количество байт.
Ответ:
14
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды
заменить (111, 27)
преобразует строку 05111150 в строку 0527150.
Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку.
Б) нашлось (v).
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка
исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда1
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно).
В конструкции
ЕСЛИ условие
ТО команда1
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно) или команда2 (если условие ложно).
Дана программа для Редактора:
НАЧАЛО
ПОКА нашлось (49) ИЛИ нашлось (97) ИЛИ нашлось (47)
ЕСЛИ нашлось (47)
ТО заменить (47, 74)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось (97)
ТО заменить (97, 79)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось (49)
ТО заменить (49, 94)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
На вход приведённой ниже программе поступает строка, содержащая 40 цифр 7, 40 цифр 9 и 50 цифр 4, расположенных в произвольном порядке. Запишите без разделителей символы, которые имеют порядковые номера 25, 71 и 105 в получившейся строке.
Ответ:
15
На рисунке представлена схема дорог, связывающих города А, Б, В, Г, Д, Е, Ж, З, И, К, Л, М. По каждой дороге можно двигаться только в одном направлении, указанном стрелкой. Какова длина самого длинного пути из города А в город М? Длиной пути считать количество дорог, составляющих этот путь.
Ответ:
16
Значение арифметического выражения: 168 · 420 − 45 − 64 — записали в системе счисления с основанием 4. Сколько цифр «3» содержится в этой записи?
Ответ:
17
В языке запросов поискового сервера для обозначения логической операции «ИЛИ» используется символ «|», а для обозначения логической операции «И» — символ «&».
В таблице приведены запросы и количество страниц, которые нашел поисковый сервер по этим запросам в некотором сегменте Интернета:
Запрос | Количество
страниц (тыс.) |
---|---|
Аврора | 50 |
Крейсер | 45 |
Заря | 23 |
Аврора & Заря | 9 |
Заря & Крейсер | 0 |
Заря | Крейсер | Аврора | 93 |
Сколько страниц (в тысячах) будет найдено по запросу Аврора & Крейсер?
Считается, что все запросы выполнялись практически одновременно, так что набор страниц, содержащих все искомые слова, не изменялся за время выполнения запросов.
Ответ:
18
Для какого наибольшего целого неотрицательного числа A выражение
(x > A) ∨ (y > A) ∨ (2y + x < 110)
тождественно истинно, то есть принимает значение 1 при любых целых неотрицательных x и y?
Ответ:
19
Представленный ниже на пяти языках программирования фрагмент программы обрабатывает элементы одномерного целочисленного массива A с индексами от 0 до 11. Перед началом выполнения данного фрагмента эти элементы массива имели значения 5, 43, 20, 7, 13, 7, 29, 13, 2, 33, 15, 5 (т. е. A[0] = 5, A[1] = 43, …, A[11] = 5). Определите значение переменной s после выполнения фрагмента
Бейсик | Python |
---|---|
s = 0 FOR i = 1 TO 11 IF A(i-1) DIV A(i) < 2 THEN s = s + A(i) ELSE A(i) = A(i) * i END IF NEXT i |
s = 0 for i in range(1,12): if A[i — 1] // A[i] < 2: s += A[i] else: A[i] = A[i] * i |
Паскаль | Алгоритмический язык |
s := 0; for i:=1 to 11 do begin if A[i — 1] div A[i] < 2 then s := s + A[i] else A[i] := A[i] * i; end; |
s := 0 нц для i от 1 до 11 если div(A[i-1],A[i]) < 2 то s := s + A[i] иначе A[i] := A[i] * i все кц |
С++ | |
s = 0; for (i = 1; i < 12; ++i) { if (A[i-1] / A[i] < 2) s += A[i]; else A[i] = A[i] * i; } |
Ответ:
20
Ниже на пяти языках программирования записан алгоритм. Получив на вход натуральное десятичное число x, этот алгоритм печатает два числа: M и L. Укажите наибольшее число x, при вводе которого алгоритм печатает сначала 3, а потом 6.
Бейсик | 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 END IF X = X 8 WEND PRINT M PRINT L |
x = int(input()) L = 1 M = 0 while x > 0: M = M + 1 if x % 2 == 0: L = L * (x % x = x // 8 print(M) print(L) |
Паскаль | Алгоритмический язык |
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(M); writeln(L); end. |
алг нач цел 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) кц вывод M, нс, L кон |
Си++ | |
#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 << M << endl << L << endl; return 0; } |
Ответ:
21
Определите, какое число будет напечатано в результате выполнения следующего алгоритма (для Вашего удобства алгоритм представлен на пяти языках):
Бейсик | Python |
---|---|
DIM A, B, T, M, R AS INTEGER 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 + 18 FUNCTION F(x) F = 2*(x*x-9)*(x*x-9)+5; END FUNCTION |
def F(x): return 2*(x*x-9)*(x*x-9)+5 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 + 18) |
Паскаль | Алгоритмический язык |
var a,b,t,M,R :longint; Function F(x:integer):integer; begin F := 2*(x*x-9)*(x*x-9)+5; 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 + 18); END. |
алг нач цел 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 + 18 кон алг цел F(цел x) нач знач := 2*(x*x-9)*(x*x-9)+5 кон |
Си++ | |
#include <iostream> using namespace std; int F(int x) { return 2*(x*x-9)*(x*x-9)+5; } int 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); } } cout << M + 18 << endl; return 0; } |
Ответ:
22
Исполнитель преобразует число на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавить 1
2. Умножить на 3
3. Прибавить 2
Сколько существует программ, для которых при исходном числе 3 результатом является число 14, и при этом траектория вычислений содержит число 9?
Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы 132 при исходном числе 7 траектория будет состоять из чисел 8, 10, 30.
Ответ:
23
Сколько наборов логических переменных удовлетворяют условиям:
((xi ∧ yj) → (xi ∧ yj+1)) ∧ ((xi ∧ yj)→(xi+1 ∧ yj)) = 1
для всех i < 5, j < 6.
Ответ:
24
На обработку поступает последовательность из четырёх неотрицательных чисел. Нужно написать программу, которая выводит на экран количество четных чисел, и их сумму. Если таких чисел нет, требуется вывести на экран «NO». Для решения этой задачи ученик написал такую программу:
Бейсик | Python |
---|---|
count = 0 sum = 0 FOR I = 1 TO 4 INPUT x IF x mod 2 = 0 THEN sum = x + i count = count + 1 END IF NEXT I IF sum > 0 THEN PRINT count PRINT sum ELSE PRINT «NO» END IF |
count = 0 sum = 0 for i in range(1,5): x = int(input()) if x % 2 == 0: sum = x + i count = count + 1 if sum > 0: print(count) print(sum) else: print(«NO») |
Алгоритмический язык | Паскаль |
алг нач цел sum,i,x,count count := 0 sum := 0 нц для i от 1 до 4 ввод x если mod(x,2) = 0 то sum := x + i count := count+1 все кц если sum > 0 то вывод count, нс вывод sum иначе вывод «NO» все кон |
var sum,i,x,count: integer; begin count := 0; sum := 0; for i := 1 to 4 do begin read (x); if x mod 2 = 0 then begin sum := x + i; count := count+1; end end; if sum > 0 then begin writeln(count); writeln(sum); end else writeln(‘NO’); end. |
Си++ | |
#include <iostream> using namespace std; int main(void) { int sum, i, x, count; count = 0; sum = 0; for (i = 1; i < 5; i++) { cin >> x; if (x % 2 == 0) { sum = x + i; count = count+1; } } if (sum > 0) { cout << count << «n»; cout << sum << «n»; } else cout << «NOn»; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе набора 70 93 50 19.
2. Приведите пример такого набора чисел, что, несмотря на ошибки, программа печатает правильный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько, но не больше двух). Для каждой ошибки: выпишите строку, в которой сделана ошибка, и приведите правильный вариант строки.
Решения заданий с развернутым ответом не проверяются автоматически.
На следующей странице вам будет предложено проверить их самостоятельно.
25
Дан массив, содержащий 2020 целых чисел, от −10000 до 10000. Необходимо найти наибольший кратный 4 элемент этого массива. После чего в массиве изменить все элементы кратные 4 на это значение и вывести массив.
Напишите на одном из языков программирования программу для решения этой задачи. В качестве результата программа должна вывести изменённый массив, по одному элементу в строке. Например, для исходного массива из 5 элементов 112 4 27 95 148 программа должна вывести числа 148 148 27 95 148 по одному числу в строке. Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.
Бейсик | Python |
---|---|
CONST N=2020 DIM A(N) AS INTEGER DIM I, M, K AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I … END |
# допускается также #использование #целочисленных # переменных m, k a = [] N = 2020 for i in range(0, N): a.append(int(input())) … |
Паскаль | Алгоритмический язык |
const N=2020; var a: array [1..N] of integer; i, m, k: integer; begin for i:=1 to N do readln(a[i]); … end. |
алг нач цел N=2020 целтаб a[1:N] цел i, m, k нц для i от 1 до N ввод a[i] кц … кон |
Си++ | |
#include <iostream> using namespace std; const int N = 2020; int main(){ int a[N]; int i, m, k; for (i=0; i < N; i++) cin >> a[i]; … return 0; } |
В качестве ответа необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и версию языка программирования). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии.
Решения заданий с развернутым ответом не проверяются автоматически.
На следующей странице вам будет предложено проверить их самостоятельно.
26
Два игрока, Петя и Ваня, играют в следующую игру. У игроков есть табличка, на которой записана пара неотрицательных чисел. Будем называть эту пару чисел позицией. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может заменить одно из чисел пары по своему выбору на сумму обоих чисел. Так, например, если перед ходом игрока была позиция (2, 4), то после его хода будет позиция (6, 4) или (2, 6). Игра завершается в тот момент, когда сумма чисел пары становится не менее 67. Победителем считается игрок, сделавший последний ход, т. е. первым получивший такую пару, что сумма ее чисел стало не менее 67.
1. Перед ходом Пети на табличке записана пара чисел (12, S). Укажите минимальное значение S — такое, что Петя может выиграть одним своим первым ходом.
2. Для начальной позиции (15, 14) укажите, кто из игроков имеет выигрышную стратегию. Опишите выигрышную стратегию.
3. Для начальной позиции (2, 4) укажите, кто из игроков имеет выигрышную стратегию. Постройте дерево всех партий, возможных при этой выигрышной стратегии (в виде рисунка или таблицы). В узлах дерева указывайте позиции, на рёбрах рекомендуется указывать ходы. Дерево не должно содержать партии, невозможные при реализации выигрывающим игроком своей выигрышной стратегии. Например, полное дерево игры не является верным ответом на это задание.
Решения заданий с развернутым ответом не проверяются автоматически.
На следующей странице вам будет предложено проверить их самостоятельно.
27
На вход программы поступает последовательность из N натуральных чисел. Рассматриваются все пары различных элементов последовательности, у которых различные остатки от деления на d = 160 и хотя бы одно из чисел делится на p = 7. Среди таких пар, необходимо найти и вывести пару с максимальной суммой элементов.
Описание входных и выходных данных.
В первой строке входных данных задаётся количество чисел N (1 ≤ N ≤ 1000). В каждой из последующих N строк записано одно натуральное число, не превышающее 10000. В качестве результата программа должна напечатать элементы искомой пары. Если среди найденных пар максимальную сумму имеют несколько, то можно напечатать любую из них. Если таких пар нет, то вывести два нуля.
Пример входных данных:
4
168
7
320
328
Пример выходных данных для приведённого выше примера входных данных:
168 320
Пояснение: Из 4 чисел можно составить 6 пар. В данном случае условиям удовлетворяют пары: 168 и 320, 168 и 7, 320 и 7, 328 и 7. Максимальную сумму дает пара 168 и 320.
Требуется написать эффективную по времени и по памяти программу для решения описанной задачи. Программа считается эффективной по времени, если при увеличении количества исходных чисел N в k раз время работы программы увеличивается не более чем в k раз. Программа считается эффективной по памяти, если память, необходимая для хранения всех переменных программы, не превышает 1 Кбайт и не увеличивается с ростом N.
Максимальная оценка за правильную (не содержащую синтаксических ошибок и дающую правильный ответ при любых допустимых входных данных) программу, эффективную по времени и по памяти, — 4 балла. Максимальная оценка за правильную программу, эффективную только по времени — 3 балла. Максимальная оценка за правильную программу, не удовлетворяющую требованиям эффективности, — 2 балла. Вы можете сдать одну программу или две программы решения задачи (например, одна из программ может быть менее эффективна). Если Вы сдадите две программы, то каждая из них будет оцениваться независимо от другой, итоговой станет бо́льшая из двух оценок.
Перед текстом программы обязательно кратко опишите алгоритм решения. Укажите используемый язык программирования и его версию.
Решения заданий с развернутым ответом не проверяются автоматически.
На следующей странице вам будет предложено проверить их самостоятельно.
Завершить тестирование, свериться с ответами, увидеть решения.
1.
1 задание. Досрочный вариант 1 ЕГЭ по информатике 2020, ФИПИ:
Сколько единиц в двоичной записи шестнадцатеричного числа E1F0?
Ответ: 8
Видео
2.
2 задание. Досрочный вариант 1 ЕГЭ по информатике 2020, ФИПИ:
Миша заполнял таблицу истинности функции
(x ∧ ¬y) ∨ (x ≡ z) ∨ ¬w
но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.
Определите, какому столбцу таблицы истинности функции F соответствует каждая из переменных w, x, y, z.
Перем.1 | Перем.2 | Перем.3 | Перем.4 | Функция |
??? | ??? | ??? | ??? | F |
0 | 1 | 1 | 0 | 0 |
0 | 0 | |||
1 | 0 | 1 | 0 |
В ответе запишите буквы в том порядке, в котором идут соответствующие им столбцы.
3.
3 задание. Досрочный вариант 1 ЕГЭ по информатике 2020, ФИПИ:
На рисунке слева изображена схема дорог N-ского района. В таблице звёздочкой обозначено наличие дороги из одного населённого пункта в другой. Отсутствие звёздочки означает, что такой дороги нет.
Каждому населённому пункту на схеме соответствует его номер в таблице, но неизвестно, какой именно номер. Определите, какие номера населённых пунктов в таблице могут соответствовать населённым пунктам E и G на схеме. В ответе запишите эти два номера в возрастающем порядке без пробелов и знаков препинания.
Ответ: 45
4.
4 задание. Досрочный вариант 1 ЕГЭ по информатике 2020, ФИПИ:
Ниже представлены два фрагмента таблиц из базы данных о жителях микрорайона. Каждая строка таблицы 2 содержит информацию о ребёнке и об одном из его родителей. Информация представлена значением поля ID в соответствующей строке таблицы 1.
Определите на основании приведённых данных, у скольких детей на момент их рождения матерям было меньше 27 полных лет. При вычислении ответа учитывайте только информацию из приведённых фрагментов таблиц.
Ответ: 4
5.
5 задание. Досрочный вариант 1 ЕГЭ по информатике 2020, ФИПИ:
По каналу связи передаются сообщения, содержащие только четыре буквы:
А, Б, В, Г
для передачи используется двоичный код, удовлетворяющий условию Фано.
Для букв Б, В, Г используются такие кодовые слова:
Б – 101 В – 110 Г – 0
Укажите кратчайшее кодовое слово для буквы А, при котором код будет допускать однозначное декодирование.
Если таких кодов несколько, укажите код с наибольшим числовым значением.
6.
6 задание. Досрочный вариант 1 ЕГЭ по информатике 2020, ФИПИ:
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число следующим образом.
1) Строится двоичная запись числа N.
2) К этой записи дописываются справа ещё два разряда по следующему правилу:
— если N чётное, в конец числа (справа) дописываются два нуля, в противном случае справа дописываются две единицы.
Например, двоичная запись 1001 числа 9 будет преобразована в 100111.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью числа – результата работы данного алгоритма.
Укажите минимальное число N, для которого результат работы алгоритма будет больше 134. В ответе это число запишите в десятичной системе счисления.
7.
7 задание. Досрочный вариант 1 ЕГЭ по информатике 2020, ФИПИ:
Дан фрагмент электронной таблицы. Из ячейки A3 в ячейку C4 была скопирована формула. При копировании адреса ячеек в формуле автоматически изменились.
Какова сумма числовых значений формул в ячейках A3 и C4?
8.
8 задание. Досрочный вариант 1 ЕГЭ по информатике 2020, ФИПИ:
Запишите число, которое будет напечатано в результате выполнения следующей программы. Для Вашего удобства программа представлена на пяти языках программирования.
Паскаль:
1 2 3 4 5 6 7 8 9 10 11 |
var s, n: integer; begin s := 175; n := 0; while s + n < 325 do begin s := s - 10; n := n + 30 end; writeln(s) end. |
Бейсик:
DIM S, N AS INTEGER S = 175 N = 0 WHILE S + N < 325 S = S - 10 N = N + 30 WEND PRINT S |
Python:
s = 175 n = 0 while s + n < 325: s = s - 10 n = n + 30 print(s) |
С++:
#include <iostream> using namespace std; int main() { int s = 175, n = 0; while (s + n < 325) { s = s - 10; n = n + 30; } cout << s << endl; return 0; } |
9.
9 задание. Досрочный вариант 1 ЕГЭ по информатике 2020, ФИПИ:
Музыкальный фрагмент был записан в формате квадро (четырёхканальная запись), оцифрован и сохранён в виде файла без использования сжатия данных. Размер полученного файла без учёта размера заголовка файла – 12 Мбайт. Затем тот же музыкальный фрагмент был записан повторно в формате моно и оцифрован с разрешением в 2 раза выше и частотой дискретизации в 1,5 раза меньше, чем в первый раз. Сжатие данных не производилось.
Укажите размер в Мбайт файла, полученного при повторной записи. В ответе запишите только целое число, единицу измерения писать не нужно. Искомый объём не учитывает размера заголовка файла
10.
10 задание. Досрочный вариант 1 ЕГЭ по информатике 2020, ФИПИ:
Вася составляет 5-буквенные слова, в которых есть только буквы
В, О, Л, К
причём буква В используется в каждом слове ровно 1 раз. Каждая из других допустимых букв может встречаться в слове любое количество раз или не встречаться совсем. Словом считается любая допустимая последовательность букв, не обязательно осмысленная.
Сколько существует таких слов, которые может написать Вася?
11.
11 задание. Досрочный вариант 1 ЕГЭ по информатике 2020, ФИПИ:
Дан рекурсивный алгоритм F.
Запишите подряд без пробелов и разделителей все числа, которые будут выведены на экран при выполнении вызова F(7). Числа должны быть записаны в том же порядке, в котором они выводятся на экран.
Паскаль:
1 2 3 4 5 6 7 8 9 |
procedure F(n: integer); begin if n > 0 then begin write(n); F(n - 3); F(n div 2) end end; |
Бейсик:
SUB F(n) IF n > 0 THEN PRINT n, F(n - 3) F(n 2) END IF END SUB |
Python:
def F(n): if n > 0: print(n) F(n - 3) F(n // 2) |
С++:
void F(int n){ if (n > 0){ std::cout << n; F(n - 3); F(n / 2); } } |
12.
12 задание. 2020 г, ФИПИ:
Для узла с IP-адресом 117.191.176.37 адрес сети равен 117.191.160.0.
Чему равен третий слева байт маски?
Ответ запишите в виде десятичного числа.
13.
13 задание. 2020 г, ФИПИ:
При регистрации в компьютерной системе каждому пользователю выдаётся пароль, состоящий из 25 символов и содержащий только символы из 7-символьного набора: С, Д, А, М, Е, Г, Э. В базе данных для хранения сведений о каждом пользователе отведено одинаковое и минимально возможное целое число байт. При этом используют посимвольное кодирование паролей, все символы кодируют одинаковым и минимально возможным количеством бит. Кроме собственно пароля, для каждого пользователя в системе хранятся дополнительные сведения, для чего выделено целое число байт; это число одно и то же для всех пользователей.
Для хранения сведений о 50 пользователях потребовалось 1200 байт. Сколько байт выделено для хранения дополнительных сведений об одном пользователе? В ответе запишите только целое число – количество байт
Ответ: 14
14.
14 задание. 2020 г, ФИПИ:
На вход приведённой ниже программе поступает строка, начинающаяся с символа «>
», а затем содержащая 10 цифр 1
, 20 цифр 2
и 30 цифр 3
, расположенных в произвольном порядке.
Определите сумму числовых значений цифр строки, получившейся в результате выполнения программы.
Так, например, если результат работы программы представлял бы собой строку, состоящую из 50 цифр 4, то верным ответом было бы число 200.
НАЧАЛО ПОКА нашлось (>1) ИЛИ нашлось (>2) ИЛИ нашлось (>3) ЕСЛИ нашлось (>1) ТО заменить (>1, 22>) КОНЕЦ ЕСЛИ ЕСЛИ нашлось (>2) ТО заменить (>2, 2>) КОНЕЦ ЕСЛИ ЕСЛИ нашлось (>3) ТО заменить (>3, 1>) КОНЕЦ ЕСЛИ КОНЕЦ ПОКА КОНЕЦ
15.
15 задание. 2020 г, ФИПИ:
На рисунке представлена схема дорог, связывающих города А, Б, В, Г, Д, Е, Ж, З, И, К, Л, М. По каждой дороге можно двигаться только в одном направлении, указанном стрелкой.
Какова длина самого длинного пути из города А в город М?
Длиной пути считать количество дорог, составляющих этот путь.
Ответ: 9
16.
16 задание. 2020 г, ФИПИ:
Значение арифметического выражения:
911 × 320 – 39 – 27
записали в системе счисления с основанием 3.
Сколько цифр 2 содержится в этой записи?
17.
17 задание. 2020 г, ФИПИ:
В таблице приведены запросы и количество найденных по ним страниц некоторого сегмента сети Интернет.
Какое количество страниц (в сотнях тысяч) будет найдено по запросу Физика & Квант ?
Считается, что все запросы выполнялись практически одновременно, так что набор страниц, содержащих все искомые слова, не изменялся за время выполнения запросов.
18.
18 задание. 2020 г, ФИПИ:
Для какого наименьшего целого неотрицательного числа А выражение
(x + 2y < A) ∨ (y > x) ∨ (x > 20)
тождественно истинно, т.е. принимает значение 1 при любых целых неотрицательных x и y?
19.
19 задание. 2020 г, ФИПИ:
В программе используется одномерный целочисленный массив A с индексами от 0 до 11. Значения элементов массива A[i] приведены в таблице:
Определите значение переменной s после выполнения следующего фрагмента этой программы.
Паскаль:
1 2 3 4 5 6 7 |
s := 0; n := 1; for i := 0 to 11 do if A[i] > A[n] then s := s + A[i] + i else A[n] := A[i]; |
Бейсик:
s = 0 n = 1 FOR i = 0 TO 11 IF A(i) > A(n) THEN s = s + A(i) + i ELSE A(n) = A(i) END IF NEXT i |
Python:
s = 0 n = 1 for i in range(0, 12): if A[i] > A[n]: s += A[i] + i else: A[n] = A[i] |
С++:
s = 0; n = 1; for (int i = 0; i < 12; i++) { if (A[i] > A[n]) s += A[i] + i; else A[n] = A[i]; } |
20.
20 задание. Досрочный вариант 1 ЕГЭ по информатике 2020, ФИПИ:
Ниже на пяти языках программирования записан алгоритм. Получив на вход натуральное десятичное число x, этот алгоритм печатает два числа: L и M.
Укажите наибольшее число x, при вводе которого алгоритм выводит сначала 2, а потом 3.
Паскаль:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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 + x mod 8; x := x div 8 end; writeln(L); writeln(M) end. |
Бейсик:
DIM X, L, M AS INTEGER INPUT X L = 0 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 |
Python:
x = int(input()) L = 0 M = 0 while x > 0: M = M + 1 if x % 2 != 0: L = L + x % 8 x = x // 8 print(L) print(M) |
С++:
#include <iostream> using namespace std; int main(){ int x, L, M; cin >> x; L = 0; 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.
21 задание. Досрочный вариант 1 ЕГЭ по информатике 2020, ФИПИ:
Определите наибольшее значение входной переменной k, при котором программа выдаёт тот же ответ, что и при входном значении k = 27.
Для Вашего удобства программа приведена на нескольких языках программирования.
Паскаль:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
var k, i : longint; function F(n: longint): longint; begin F := n * n * n; end; function G(n: longint): longint; begin G := 2 * n + 2; end; begin readln(k); i := 1; while F(i) < G(k) do i := i + 1; writeln(i) end. |
Бейсик:
DIM K, I AS LONG INPUT K I = 1 WHILE F(I) < G(K) I = I + 1 WEND PRINT I FUNCTION F(N) F = N * N * N END FUNCTION FUNCTION G(N) G = 2 * N + 2 END FUNCTION |
Python:
def F(n): return n*n*n def G(n): return 2 * n + 2 k = int(input()) i = 1 while F(i) < G(k): i+=1 print (i) |
С++:
#include <iostream> using namespace std; long F(long n) { return n * n * n; } long G(long n) { return 2 * n + 2; } int main() { long k, i; cin >> k; i = 1; while(F(i) < G(k)) i++; cout << i; return 0; } |
22.
22 задание. 2020 г, ФИПИ:
Исполнитель Вычислитель преобразует число на экране.
У исполнителя есть две команды, которым присвоены номера:
1. Прибавить 1
2. Умножить на 2
Первая команда увеличивает число на экране на 1, вторая умножает его на 2.
Программа для Вычислителя – это последовательность команд.
Сколько существует программ, для которых при исходном числе 1 результатом является число 21 и при этом траектория вычислений содержит число 10 и не содержит числа 18?
Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Например, для программы 121 при исходном числе 7 траектория будет состоять из чисел 8, 16, 17.
Ответ: 14
23.
23 задание. 2020 г, ФИПИ:
Сколько существует различных наборов значений логических переменных x1, x2, … x7, y1, y2, … y7, которые удовлетворяют всем перечисленным ниже условиям?
x1 → y1 = 1 (x2 → (x1 ∧ y2)) ∧ (y2 → y1) = 1 (x3 → (x2 ∧ y3)) ∧ (y3 → y2) = 1 … (x7 → (x6 ∧ y7)) ∧ (y7 → y6) = 1
В ответе не нужно перечислять все различные наборы значений переменных x1, x2, … x7, y1, y2, … y7, при которых выполнена данная система равенств. В качестве ответа Вам нужно указать количество таких наборов.
Ответ: 36
24.
24 задание. 2020 г, ФИПИ:
Требовалось написать программу, которая получает на вход натуральное число N, не превосходящее 109, и выводит число, равное количеству цифр 4 в десятичной записи числа N. Программист написал программу неправильно. Ниже эта написанная им программа для Вашего удобства приведена на нескольких языках программирования.
Паскаль:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
var N: longint; R, d: integer; begin readln(N); R := 0; while N > 0 do begin d := N mod 10; if d <> 4 then R := R + d; N := N div 10; end; writeln(R); end. |
Бейсик:
DIM N AS LONG DIM R, d AS INTEGER INPUT N R = 0 WHILE N > 0 d = N MOD 10 IF d <> 4 THEN R = R + d END IF N = N 10 WEND PRINT R END |
Python:
N = int(input()) R = 0 while N > 0: d = N % 10 if d != 4: R = R + d N = N // 10 print(R) |
С++:
#include <iostream> using namespace std; int main() { long int N; int R, d; cin >> N; R = 0; while (N > 0) { d = N % 10; if (d != 4) { R = R + d; } N = N / 10; } cout << R << endl; return 0; } |
-
Последовательно выполните следующее:
- Напишите, что выведет эта программа при вводе числа 241.
- Приведите пример входного числа N, при котором приведённая программа, несмотря на ошибки, выдаёт верный ответ.
- Найдите допущенные программистом ошибки и исправьте их:
- 1) выпишите строку, в которой сделана ошибка;
- 2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.
Исправление ошибки должно затрагивать только строку, в которой находится ошибка. Для каждой ошибки:
Известно, что в тексте программы нужно исправить не более двух строк так, чтобы она стала работать правильно.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание на то, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.
✍ Решение:
- Программа выведет число 3.
- Программа выдаёт правильный ответ, например, при N = 244.
- В программе есть две ошибки:
Примечание для эксперта. Программа выводит сумму цифр, отличных от 4.
Первая ошибка: неверная проверка условия увеличения счетчика – переменной R.
Строка с ошибкой:
if d <> 4 then
Верное исправление:
if d = 4 then
Вторая ошибка: неверно увеличивается значение переменной R.
Строка с ошибкой:
R := R + d;
Верное исправление:
R := R + 1;
Видео
25.
25 задание. 2020 г, ФИПИ:
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 10 000 включительно. Опишите на одном из языков программирования алгоритм, который находит количество элементов массива, больших 100 и при этом не кратных 4, а затем заменяет каждый такой элемент на число, равное найденному количеству.
Гарантируется, что хотя бы один такой элемент в массиве есть. В качестве результата необходимо вывести изменённый массив, каждый элемент выводится с новой строчки.
Например, для исходного массива из шести элементов:
141 256 92 148 511 4
программа должна вывести следующий массив:
2 256 92 148 2 4
Исходные данные объявлены так, как показано ниже на примерах для нескольких языков программирования. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.
Паскаль:
1 2 3 4 5 6 7 8 9 10 |
const N = 30; var a: array [1..N] of longint; i, j, k: longint; begin for i := 1 to N do readln(a[i]); ... end. |
Бейсик:
CONST N AS INTEGER = 30 DIM A (1 TO N) AS LONG DIM I AS LONG, J AS LONG, K AS LONG FOR I = 1 TO N INPUT A(I) NEXT I ... END |
Python:
# допускается также # использовать две # целочисленные переменные j и k a = [] n = 30 for i in range(0, n): a.append(int(input())) ... |
С++:
#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 := 0; for i := 1 to N do if (a[i] > 100) and (a[i] mod 4 <> 0) then k := k + 1; for i := 1 to N do begin if (a[i] > 100) and (a[i] mod 4 <> 0) then a[i] := k; writeln(a[i]); end;
Бейсик:
K = 0 FOR I = 1 TO N IF A(I) > 100 AND A(I) MOD 4 <> 0 THEN K = K + 1 END IF NEXT I FOR I = 1 TO N IF A(I) > 100 AND A(I) MOD 4 <> 0 THEN A(I) = K END IF PRINT A(I) NEXT I |
Python:
k = 0 for i in range(0, n): if (a[i] > 100 and a[i] % 4 != 0): k = k + 1 for i in range(0, n): if (a[i] > 100 and a[i] % 4 != 0): a[i] = k print(a[i]) |
С++:
k = 0; for (i = 0; i < N; i++) if (a[i] > 100 && a[i] % 4 != 0) k++; for (i = 0; i < N; i++) { if (a[i] > 100 && a[i] % 4 != 0) a[i] = k; cout << a[i] << endl; } |
26.
26 задание. 2020 г, ФИПИ:
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один или четыре камня либо увеличить количество камней в куче в пять раз.
Например, имея кучу из 15 камней, за один ход можно получить кучу из 16, 19 или 75 камней.
У каждого игрока, чтобы делать ходы, есть неограниченное количество камней.
Игра завершается в тот момент, когда количество камней в куче становится не менее 63.
Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, в которой будет 63 или больше камней.
В начальный момент в куче было S камней; 1 ≤ S ≤ 62.
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока – значит описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника. В описание выигрышной стратегии не следует включать ходы играющего по этой стратегии игрока, не являющиеся для него безусловно выигрышными, т.е. не являющиеся выигрышными независимо от игры противника.
Выполните следующие задания. Во всех случаях обосновывайте свой ответ.
Задание 1
а) Укажите все такие значения числа S, при которых Петя может выиграть
за один ход
.
б) Укажите такое значение S, при котором Петя
не может выиграть за один ход
, но при любом ходе Пети Ваня может выиграть своим
первым ходом
. Опишите выигрышную стратегию Вани.
Задание 2
Укажите два таких значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:
Для каждого указанного значения S
опишите выигрышную стратегию Пети
.
Задание 3
Укажите значение S, при котором одновременно выполняются два условия:
Для указанного значения S опишите выигрышную стратегию Вани.
Постройте дерево всех партий, возможных при этой выигрышной стратегии Вани (в виде рисунка или таблицы). На рёбрах дерева указывайте, кто делает ход; в узлах – количество камней в куче.
Дерево не должно содержать партии, невозможные при реализации выигрывающим игроком своей выигрышной стратегии. Например, полное дерево игры не является верным ответом на это задание.
✍ Решение:
- Задание 1
- Задание 2
- Задание 3
а) Петя может выиграть, если S = 13, … 62.
б) Ваня может выиграть первым ходом (как бы ни играл Петя), если исходно в куче S = 12 камней. Тогда после первого хода Пети в куче будет 13, 16 или 60 камней. Во всех случаях Ваня увеличивает количество камней в 5 раз и выигрывает за один ход.
Замечание для проверяющего. В задаче не требуется указать все выигрышные стратегии. Если в работе выпускника, как в приведённом примере, просто указано, что Ваня всегда увеличивает в 5 раз количество камней, – это не ошибка.
Возможные значения S: 8, 11. В этих случаях Петя, очевидно, не может выиграть первым ходом. Однако он может получить кучу из 12 камней. Эта позиция разобрана в п. 1б. В ней игрок, который будет ходить (теперь это Ваня), выиграть не может, а его противник (т.е. Петя) следующим ходом выиграет.
Возможные значения S: 7, 10.
Например, для S = 7 после первого хода Пети в куче будет 8, 11 или 35 камней. Если в куче станет 35 камней, Ваня увеличит количество камней в 5 раз и выиграет первым ходом. Ситуация, когда в куче 8 или 11 камней, разобрана в п. 2. В этой ситуации игрок, который будет ходить (теперь это Ваня), выигрывает своим вторым ходом.
Ниже представлено дерево возможных партий (и только их) при описанной стратегии Вани для значения S = 7. При выбранной стратегии на последнем ходе Ваня увеличивает в 5 раз количество камней, хотя возможны и другие выигрышные стратегии. Для второго возможного
значения дерево строится аналогично. Заключительные позиции (в них выигрывает Ваня) подчёркнуты.
Примечание для проверяющего. Здесь для полноты картины указаны два возможных значения S. По условию задачи достаточно указать одно из них
27.
27 задание. 2020 г, ФИПИ (1 вариант):
Дана последовательность N целых положительных чисел. Рассматриваются все пары элементов последовательности, разность которых чётна, и в этих парах, по крайней мере, одно из чисел пары делится на 17. Порядок элементов в паре неважен. Среди всех таких пар нужно найти и вывести пару с максимальной суммой элементов. Если одинаковую максимальную сумму имеет несколько пар, можно вывести
любую из них
. Если подходящих пар в последовательности нет,
нужно вывести два нуля
.
Описание входных и выходных данных
В первой строке входных данных задаётся количество чисел N (2 ≤ N ≤ 10 000). В каждой из последующих N строк записано одно натуральное число, не превышающее 10 000.
Пример входных данных:
5 34 12 51 52 51
Пример выходных данных для приведённого выше примера входных данных:
51 51
Пояснение. Из данных пяти чисел можно составить три различные пары, удовлетворяющие условию: (34, 12), (34, 52), (51, 51). Наибольшая сумма получается в паре (51, 51). Эта пара допустима, так как число 51 встречается в исходной последовательности дважды.
Напишите эффективную по времени и памяти программу для решения этой задачи.
Программа считается эффективной по времени, если при увеличении количества исходных чисел N в k раз время работы программы увеличивается не более чем в k раз.
Программа считается эффективной по памяти, если память, необходимая для хранения всех переменных программы, не превышает 1 Кбайт и не увеличивается с ростом N.
Максимальная оценка за правильную (не содержащую синтаксических ошибок и дающую правильный ответ при любых допустимых входных данных) программу, эффективную по времени и памяти, – 4 балла.
Максимальная оценка за правильную программу, эффективную только по времени или только по памяти, – 3 балла.
Максимальная оценка за правильную программу, не удовлетворяющую требованиям эффективности, – 2 балла.
Вы можете сдать одну или две программы решения задачи. Если Вы сдадите две программы, каждая из них будет оцениваться независимо от другой, итоговой станет бо́льшая из двух оценок.
Перед текстом программы кратко опишите алгоритм решения. Укажите использованный язык программирования и его версию.
✍ Решение:
- Программа эффективна по времени и памяти
- Правильная программа на языке C++, эффективная только по времени
- Правильная, но неэффективная программа на языке Паскаль
Паскаль (PascalABC):
const p = 17; var N: integer; {количество чисел} a: integer; {очередное число} m0, m1: integer; {чётный и нечётный максимумы} mp0, mp1: integer; {чётный и нечётный максимумы, кратные p} x, y: integer; {ответ – пара чисел} i: integer; begin m0 := 0; m1 := 0; mp0 := 0; mp1 := 0; x := 0; y := 0; readln(N); for i := 1 to N do begin readln(a); // 5 34 12 51 52 51 // 4 51 68 3 2 // 4 85 51 68 2 // для четных if a mod 2 = 0 then begin // если кратное if (a mod p = 0)and(a>=mp0) then begin if mp0>m0 then m0:=mp0; mp0:=a end else if a>m0 then m0 := a; end else begin // для нечетных if (a mod p = 0)and(a>=mp1) then begin if mp1>m1 then m1:=mp1; mp1 := a; end else if a>m1 then m1:=a; end; end; // writeln('mp0=', mp0, 'm0=', m0); if (mp0 > 0) and (m0 > 0) then begin x := mp0; y := m0; end; // writeln('mp1=', mp1, 'm1=', m1); if (mp1 > 0) and (m1 > 0) and (mp1 + m1 > x + y) then begin x := mp1; y := m1; end; writeln('=', x, ' ', y) end.
:
p = 17 m0 = m1 = mp0 = mp1 = 0 N = int(input()) for i in range(N): a = int(input()) if a % 2 == 0: if a % p == 0 and a >= mp0: if mp0 > m0: m0 = mp0 mp0 = a elif a > m0: m0 = a else: if a % p == 0 and a >= mp1: if mp1 > m1: m1 = mp1 mp1 = a elif a > m1: m1 = a x = y = 0 if mp0 > 0 and m0 > 0: x = mp0; y = m0 if mp1 > 0 and m1 > 0 and mp1 + m1 > x + y: x = mp1; y = m1 print(x,y)
Ещё один путь решения – записать всю последовательность в массив и анализировать её в несколько проходов. Ниже приводится реализующая такой алгоритм программа на языке C++. В этой программе массив с исходными данными обрабатывается два раза: на первом проходе находятся индексы максимального чётного и нечётного элементов, кратных p, на втором проходе – общие чётный и нечётный максимумы. При этом элементы, выделенные как кратные при первом проходе, во время второго прохода из сравнения исключаются. Такая программа эффективна по времени (несмотря на повторную обработку массива, общее время работы пропорционально N), но неэффективна по памяти. Максимальная оценка за такую программу при отсутствии в ней синтаксических и содержательных ошибок – 3 балла.
С++:
#include <iostream> using namespace std; int main() { const int p = 17; // делитель int N; cin >> N; // количество элементов int a[N]; // элементы последовательности for (int i = 0; i < N; ++i) cin >> a[i]; int imp0 = -1, imp1 = -1; //индексы максимумов, кратных p for (int i = 0; i < N; ++i) { if (a[i] % p == 0) { if (a[i] % 2 == 0) { if (imp0 == -1 || a[i] > a[imp0]) imp0 = i; } else { if (imp1 == -1 || a[i] > a[imp1]) imp1 = i; } } } int im0 = -1, im1 = -1; // индексы общих максимумов for (int i = 0; i < N; ++i) { if (i != imp0 && i != imp1) { if (a[i] % 2 == 0) { if (im0 == -1 || a[i] > a[im0]) im0 = i; } else { if (im1 == -1 || a[i] > a[im1]) im1 = i; } } } int x = 0, y = 0; // пара чисел для ответа if (imp0 != -1 && im0 != -1) { x = a[imp0]; y = a[im0]; } if (imp1 != -1 && im1 != -1 && a[imp1] + a[im1] > x + y) { x = a[imp1]; y = a[im1]; } cout << x << ' ' << y << endl; return 0; }
Паскаль:
const p = 17; var N: integer; {количество чисел} a: array [1..10000] of integer; {исходные данные} x, y: integer; {ответ – пара чисел} i, j: integer; begin readln(N); for i := 1 to N do readln(a[i]); x := 0; y := 0; for i := 1 to N - 1 do begin for j := i + 1 to N do begin if ((a[i] - a[j]) mod 2 = 0) and ((a[i] mod p = 0) or (a[j] mod p = 0)) and (a[i] + a[j] > x + y) then begin x := a[i]; y := a[j] end end end; writeln(x, ' ', y) end.
Видео
ЕГЭ по информатике -> досрочный ЕГЭ 2020
- 07.09.2020
Сборник реальных вариантов и заданий, которые были на ЕГЭ по информатике в 2020 году.
Материалы собраны на основе того, что запомнили из своих вариантов выпускники 2020 года. Материал актуален для тех, кто планирует подготовка к ЕГЭ по информатике в следующих годах.
Некоторые варианты содержат ответы, некоторые нет.
- Вся актуальная информация про ЕГЭ 2021 по информатике
Пишите в комментариях свои варианты ответов или задавайте вопросы, будем обсуждать.
Составитель сборника ЕГЭ100баллов https://vk.com/ege100ballov Подписывайтесь на очень крутой ВК проект!
Ссылки по теме:
- Другие тренировочные тесты по информатике
- Другие реальные варианты ЕГЭ 2020
- Досрочные варианты ЕГЭ 2020
Примеры заданий
ЗАДАНИЕ 24
Найти произведение всех чисел не кратных трем и их количество среди четыре вводимых чисел. Ошибка была что произведение умножались на i а не на вводимое число и что в конце в выводе проверка на произведение>1 а должно быть количество >0
ЗАДАНИЕ 25
Поиск в массиве минимума кратного пяти, после вывод массива и если число кратно пяти заменять на найденный минимум. Переменные i,j,k
ЗАДАНИЕ 27
- Найти среди N положительных чисел пару, где разность чисел четная, сумма максимальная, и хотя бы одно из чисел кратно 21. Найти и вывести такую пару. Если такой пары чисел нет, то вывести два нуля
- Максимальная сумма двух введенных чисел, одно из которых кратно 7, при этом остатки от деления этих двух чисел на 180 не равны друг другу.
- Из последовательности надо выбрать два наибольших числа с разными остатками деления на 180. Одно из чисел кратно 7
Смотреть в PDF:
Или прямо сейчас: cкачать в pdf файле.
Материалы для подготовки
|
|
До начала ЕГЭ-2023 осталось : |
Поляков К.Ю | сайт | ||
Кабанов Алексей | сайт | YouTube | VKontakte |
Информатик БУ | YouTube | VKontakte | |
Alex Danov | YouTube | VKontakte | |
Решу ЕГЭ | сайт | ||
ФИПИ | сайт |
Статья Е. Джобса «ТОП-10 источников для подготовки к КЕГЭ-2023» — читать в ВК или документ WORD
Тоже самое на YouTube — смотреть
Соответствие заданий ЕГЭ — 2020 и КЕГЭ — 21-22 — смотреть
Сборник реальных заданий ЕГЭ с решениями (by Flash) — смотреть
FLASH Сборник _Реальные задания ЕГЭ информатика 2021_ 1.1