*** ПЛЕЙЛИСТ КАНАЛА ЮТЬЮБ ***
ЕГЭ по информатике -> демоверсия ЕГЭ 2024
Скачать pdf демоверсии варианта ->
На рисунке изображена схема дорог Н-ского района. В таблице звёздочкой обозначено наличие дороги из одного населённого пункта в другой. Отсутствие звёздочки означает, что такой дороги нет.
1 | 2 | 3 | 4 | 5 | 6 | 7 | |
---|---|---|---|---|---|---|---|
1 | — | * | * | * | * | * | * |
2 | * | — | * | ||||
3 | * | — | * | * | |||
4 | * | — | * | * | |||
5 | * | * | * | — | |||
6 | * | * | — | ||||
7 | * | * | * | — |
Каждому населённому пункту на схеме соответствует номер в таблице, но неизвестно, какой именно номер. Определите, какие номера в таблице могут соответствовать населённым пунктам E и F на схеме. В ответе запишите эти два номера в возрастающем порядке без пробелов и знаков препинания.
Ответ: 35
✍ Решение:
- Рядом с каждой вершиной проставим количество ребер вершины (степень вершины). Кроме того, граф симметричен:
- Поскольку уникальная вершина здесь только одна, и она находится в центре, то рассмотрим остальные вершины. Все остальные вершины и имеют степень 3, кроме вершин
А
иB
, которые имеют степень 2:
B = 2(D3,C6) A = 2(G3,C6)
D3
и G3
.C
соответствует единственный уникальный пункт 1, то в таблице остаются только пункт 3 и 5, которые и соответствуют вершинам E
и F
.Ответ: 35
Миша заполнял таблицу истинности логической функции F
(x ∧ ¬y) ∨ (y ≡ z) ∨ ¬w
но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.
Определите, какому столбцу таблицы истинности функции F соответствует каждая из переменных w, x, y, z.
Перем.1 | Перем.2 | Перем.3 | Перем.4 | Функция |
??? | ??? | ??? | ??? | F |
0 | 0 | 0 | ||
1 | 0 | 0 | 0 | |
1 | 0 | 1 | 0 |
В ответе запишите буквы в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу, и т.д.).
Ответ: wzyx
🎦 Программное решение (PascalAbc.Net): YouTube и RuTube
🎦 Теоретическое решение подобного задания: RuTube
✍ Решение:
-
✎ Теоретическое решение:
✎ Программное решение:
Язык pascalABC.NET (классический):
begin writeln('x y z w'); for var x := false to true do for var y := false to true do for var z := false to true do for var w := false to true do begin var f := not ((x and not y) or (y = z) or not w); if f then println(Ord(x), Ord(y), ord(z), ord(w)) end; end. |
Язык pascalABC.NET (LINQ):
## uses school; var t:=TrueTable((x,y,z,w)->(x and not y)or(y = z)or not w); TrueTablePrint(t,0,'xyzw'); // 0 так как для лжи |
Python:
# создадим функцию для вычисления значения логического выражения def f(x, y, z, w): return (x and not y) or (y == z) or not w from itertools import * # перебор всех пробелов for a1, a2, a3, a4 in product([0, 1], repeat=4): # все наборы t = [(a1,a2,0,0),(1,0,a3,0),(1,0,1,a4)] # проверяем все ли наборы уникальны if len(set(t)) != len(t): continue # перебор всех перестановок имен столбцов for p in permutations('xyzw'): # проверка на совпадение результата if [f(**dict(zip(p,r))) for r in t]==[0,0,0]: print(*p, sep='') |
В файле приведён фрагмент базы данных «Кондитерские изделия» о поставках конфет и печенья в магазины районов города. База данных состоит из трёх таблиц.
Таблица «Движение товаров» содержит записи о поставках товаров в магазины в течение первой половины июня 2023 г., а также информацию о проданных товарах. Поле Тип операции содержит значение Поступление или Продажа, а в соответствующее поле Количество упаковок, шт. внесена информация о том, сколько упаковок товара поступило в магазин или было продано в течение дня. Заголовок таблицы имеет следующий вид.
ID операции | Дата | ID магазина | Артикул | Количество упаковок | Тип операции |
Таблица «Товар» содержит информацию об основных характеристиках каждого товара. Заголовок таблицы имеет следующий вид.
Артикул | Отдел | Наименование товара | Ед_изм | Количество в упаковке | Цена за упаковку |
Таблица «Магазин» содержит информацию о местонахождении магазинов. Заголовок таблицы имеет следующий вид.
ID магазина | Район | Адрес |
На рисунке приведена схема указанной базы данных.
Используя информацию из приведённой базы данных, определите общую массу (в кг) всех видов зефира, полученных магазинами на улице Металлургов за период с 4 по 13 июня включительно.
В ответе запишите только число.
Ответ: 3570
✍ Решение:
- Задание можно выполнить использую опцию Фильтр в Excel.
- Перейдем в лист Товары. Выделим полностью первую строку и применим к ней фильтр (меню Данные — Фильтр).
- В фильтре для столбца
С
с товарами выбираем сначала Выделить всё (чтобы отменить все выделения), а затем — только значения, связанные с зефиром: - Получаем в результате записи, запоминаем артикулы (4,5,6,7):
- Переходим на лист с Магазинами и отфильтровываем точно так же записи для улицы Металлургов, запоминаем ID магазинов (М2, М16):
- Переходим на лист Движение товаров. Ставим фильтр полностью на первую строку. Наложим фильтр на поле ID магазина — выбираем М2 и М16, и Артикул — 4, 5, 6, 7. Затем используем фильтр для поля «тип операции» (выбираем значение «поступление») и для поля «дата» (выбираем значения от 3 до 14 июня):
- Для подсчета общей массы:
- отсортируем полученные данные по значению артикула;
- подсчитаем сумму упаковок каждого артикула: выделяем соответствующие ячейки и смотрим в строку состояния;
- переходим на лист Товар и копируем данные о кол-ве в упаковке;
- В полученной таблицы проводим расчёт (Кол-во упаковок * кол-во в упаковке / 1000):
Ответ: 3570
По каналу связи передаются сообщения, содержащие только восемь букв:
А, Б, В, Г, Д, Е, Ж и З.
Для передачи используется двоичный код, удовлетворяющий условию Фано.
Кодовые слова для некоторых букв известны:
А – 000 Б – 001 В - 0101 Г - 0100 Д - 011 Е - 101
Какое наименьшее количество двоичных знаков потребуется для кодирования двух оставшихся букв?
В ответе запишите суммарную длину кодовых слов для букв: Ж, З
Ответ: 5
✍ Решение:
-
Для решения используем дерево. Влево откладываем 0, вправо — 1:
Для букв Ж и З имеем кодовые слова:
100
и 11
. Суммарная длина = 5.
Ответ:
5
На вход алгоритма подаётся натуральное число N
. Алгоритм строит по нему новое число R
следующим образом.
1. Строится двоичная запись числа N
.
2. Далее эта запись обрабатывается по следующему правилу:
а) если число N
делится на 3, то к этой записи дописываются три последние двоичные цифры;
б) если число N
на 3 не делится, то остаток от деления умножается на 3, переводится в двоичную запись и дописывается в конец числа.
Полученная таким образом запись является двоичной записью искомого числа R.
3. Результат переводится в десятичную систему и выводится на экран.
Укажите минимальное число R
, большее 151, которое может быть получено с помощью описанного алгоритма В ответе это число запишите в десятичной системе счисления.
Ответ: 163
🎦 Программное решение (PascalAbc.Net): YouTube и RuTube
✍ Решение:
✎ Программное решение:
Язык pascalABC.NET (классический):
|
|
Python:
|
Ответ: 163
Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост
опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует две команды:
Вперёд n (где n – целое число), вызывающая передвижение Черепахи на n
единиц в том направлении, куда указывает её голова,
и Направо m (где m – целое число), вызывающая изменение направления движения на m
градусов по часовой стрелке.
Запись Повтори k [Команда1 Команда2 … КомандаS] означает, что последовательность из S
команд повторится k
раз.
1. Черепахе был дан для исполнения следующий алгоритм:
Повтори 7 [Вперёд 10 Направо 120].
Определите, сколько точек с целочисленными координатами будут находиться внутри области, ограниченной линией, заданной данным алгоритмом. Точки на линии учитывать не следует.
ИЛИ:
2. Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует 6 команд:
Поднять хвост, означающая переход к перемещению без рисования;
Опустить хвост, означающая переход в режим рисования;
Вперёд n (где n – целое число), вызывающая передвижение Черепахи на n единиц в том направлении, куда указывает её голова;
Назад n (где n – целое число), вызывающая передвижение в противоположном голове направлении;
Направо m (где m – целое число), вызывающая изменение направления движения на m градусов по часовой стрелке,
Налево m (где m – целое число), вызывающая изменение направления движения на m градусов против часовой стрелки.
Запись Повтори k [Команда1 Команда2 … КомандаS] означает, что последовательность из S команд повторится k раз.
Черепахе был дан для исполнения следующий алгоритм:
Повтори 2 [Вперёд 8 Направо 90 Вперёд 18 Направо 90] Поднять хвост Вперёд 4 Направо 90 Вперёд 10 Налево 90 Опустить хвост Повтори 2 [Вперёд 17 Направо 90 Вперёд 7 Направо 90]
Определите, сколько точек с целочисленными координатами будут находиться внутри объединения фигур, ограниченного заданными алгоритмом линиями, включая точки на линиях.
Ответ: Пример 1: 38, Пример 2: 275
✍ Решение:
-
Задание 1:
- Запустите программу Кумир.
- В окне редактора введите код для Черепахи:
использовать Черепаха алг нач цел а опустить хвост нц для а от 1 до 7 вперед(10) вправо(120) кц кон
✎ Программное решение:
Python:
from turtle import * # увеличиваем масштаб в 20 tracer(0) lt(90) pd() for _ in range(7): fd(10*20) rt(120) up() # рисуем точки с учетом масштаба (_* 20) for x in range(20): for y in range(20): goto(x*20, y*20) dot(5) update() |
Ответ: 38
Задание 2:
✎ Аналитическое решение:
Повтори 2 [Вперёд 8 Направо 90 Вперёд 18 Направо 90]
: Черепаха рисует прямоугольник 8 х 18 и останавливается в начальной точке.Вперёд 4 Направо 90 Вперёд 10 Налево 90
.Повтори 2 [Вперёд 17 Направо 90 Вперёд 7 Направо 90]
: Черепаха рисует прямоугольник 17 х 7.Прямоугольник 8х18: 9*19 = 171
Прямоугольник 7х17: 8*18 = 144
Внутренний прямоугольник 4х7, который нужно убрать (он уже учтен в прямоугольнике 8х18):
5*8 = 40
Получаем: 171 + 144 - 40 = 275
✎ Программное решение:
Python:
from turtle import * screensize(1200, 1200) tracer(0) lt(90) pd() for _ in range(2): fd(8*20) rt(90) fd(18*20) rt(90) up() fd(4*20); rt(90) fd(10*20); lt(90) down() for _ in range(2): fd(17*20) rt(90) fd(7*20) rt(90) up() for x in range(30): for y in range(30): goto(x*20, y*20) dot(5) update() |
Ответ: 275
Прибор автоматической фиксации нарушений правил дорожного движения делает цветные фотографии размером 1024×768 пикселей, используя палитру из 4096 цветов. Для передачи снимки группируются в пакеты по 256 штук. Определите максимальный размер одного пакета фотографий в Мбайт.
В ответе запишите только число.
Ответ: 288
✍ Решение:
- По формуле объема файла изображения имеем:
- Глубину цвета можно найти из формулы:
- Из формулы имеем
i = 12
. - Посчитаем объем, необходимый для передачи одной фотографии:
где N — общее количество пикселей или разрешение,
а i — глубина цвета (количество бит, выделенное на 1 пиксель)
I = 1024*768*12 бит = 1024*768*12 / (8 * 1024 * 1024) Мбайт = 1.125 Мбайт
Теперь вычислим объем, необходимый для передачи пакета:
1.125 * 256 = 288 Мбайт
Ответ: 288
Ответ: 180
🎦 Программное решение (PascalAbc.Net): YouTube и RuTube
✍ Решение:
-
✎ Аналитическое решение:
- Цифры 8-й с.с.: 0 1 2 3 4 5 6 7
- Из них четные цифры: 0, 2, 4, 6 и нечетные цифры: 3, 5, 7.
- По условию четные и нечетные цифры не могут стоять рядом. Кроме того, цифры не повторяются Значит, получаем два варианта:
Н Ч Н Ч Н : 3*4*2*3*1 = 72 числа
Ч Н Ч Н Ч: 3*3*3*2*2 = 108 чисел (первый не может быть 0!)
108 + 72 = 180
✎ Программное решение:
Язык pascalABC.NET (классический):
## var count:=0; foreach var a1 in '1234567' do foreach var a2 in '01234567' do foreach var a3 in '01234567' do foreach var a4 in '01234567' do foreach var a5 in '01234567' do begin var number:=a1+a2+a3+a4+a5; if number.Count = number.Distinct.Count then if (number.countOf('1')=0) then if ((integer(a1)+integer(a2)).NotDivs(2)) and ((integer(a2)+integer(a3)).NotDivs(2)) and ((integer(a3)+integer(a4)).NotDivs(2)) and ((integer(a4)+integer(a5)).NotDivs(2)) then begin count+=1; //print(number); end; end; print(count) |
Язык pascalABC.NET (LINQ):
## uses school; var numb:='01234567'.cartesian(5)// т.к. цифр 5 штук .where(w->w.First<>'0') // первая цифра не может быть 0 .where(w->w.count=w.distinct.count) .where(w->w.CountOf('1')=0) .where(w->w.Pairwise.All(\(a,b)-> ((integer(a)+integer(b))mod 2 <>0)))// проверка пар 6 и нечетное .count.print |
Язык Python:
from itertools import permutations k = 0 for d in permutations([0, 2, 3, 4, 5, 6, 7], r=5): if d[0] != 0 and all(a % 2 != b % 2 for a, b in zip(d, d[1:])): k += 1 print(k) |
Откройте файл электронной таблицы, содержащей в каждой строке семь натуральных чисел. Определите количество строк таблицы, для чисел которых выполнены оба условия:
В ответе запишите только число.
Ответ: 83
✍ Решение:
- Откроем файл электронной таблицы. Будем считать, сколько встречается каждый ячейка первой строки в диапазоне всех ячеек первой строки. Для этого создадим формулы и расположим их также в первой строке:
H1 = СЧЁТЕСЛИ($A1:$G1;A1)
т.е. в диапазоне A1:G1
ищем А1
. Знак доллара используется для фиксации буквы при копировании.
Скопируйте формулу на 6 ячеек вправо:
I1 = СЧЁТЕСЛИ($A1:$G1;B1) J1 = СЧЁТЕСЛИ($A1:$G1;C1) K1 = СЧЁТЕСЛИ($A1:$G1;D1) L1 = СЧЁТЕСЛИ($A1:$G1;E1) M1 = СЧЁТЕСЛИ($A1:$G1;F1) N1 = СЧЁТЕСЛИ($A1:$G1;G1)
0
или 1
. Будем использовать отдельно две формулы:O1 = ЕСЛИ((СЧЁТЕСЛИ(H1:N1; 2) = 4);1;0) P1 = ЕСЛИ((СЧЁТЕСЛИ(H1:N1; 1) = 3);1;0)
СУММЕСЛИ
для поиска двоек в диапазоне H:N
, и последующего сложения соответствующих им ячеек диапазона A:G
. Результат разделим на 4:Q1 = СУММЕСЛИ(H1:N1; 2; A1:G1)/4
R1 = СУММЕСЛИ(H1:N1; 1; A1:G1)/3
O1
и P1
. Таким образом, получим единицу, в случае выполнения всех условий и 0 — в обратном случае:S = O1*P1*(Q1<R1)
T = СУММ(S:S)
Ответ: 83
Определите, сколько раз в тексте главы II повести А.И. Куприна «Поединок» встречается сочетание букв «все» или «Все» только в составе других слов, но не как отдельное слово. В ответе укажите только число.
Ответ: 9
✍ Решение:
- Необходимо оставить только главу II, всё остальное удалить.
- Выделим всё ДО главы II и удалим его:
Ctrl+F
ищемII
; ставим курсор перед главой.Ctrl+Shift+Home
выделим текст ДО главы.- Удаляем.
- Найдем начало третьей главы (
Ctrl+F
ищемIII
. Ctrl+Shift+End
выделим текст до конца документа.- Удалим его.
- С помощью меню замены (
Ctrl+H
) удалим все отдельные слова «Все» и «все» (отмечаем флажки «слово целиком», «с учетом регистра»)
Ответ: 9
При регистрации в компьютерной системе каждому объекту присваивается идентификатор, состоящий из 60 символов и содержащий только десятичные цифры и символы из 250-символьного специального алфавита.
В базе данных для хранения каждого идентификатора отведено одинаковое и минимально возможное целое число байт. При этом используется посимвольное кодирование идентификаторов, все символы кодируются одинаковым и минимально возможным количеством бит.
Определите объём памяти (в Кбайт), необходимый для хранения 65 536 идентификаторов.
В ответе запишите только целое число – количество Кбайт.
Ответ: 4352
✍ Решение:
- Чтобы найти количество бит, необходимое для хранения одного идентификатора, для начала нужно найти количество бит, необходимых для хранения 1 символа в идентификаторе. По формуле получаем:
250 + 10 = 2N -> N ~ 9 бит (т.к. 8 мало)
60 * 9 = 540 бит всего на идентификатор
540 бит / 8 =67,5 ~ 68 байт (67 не хватит)
68 * 65536 : 210 = 4352
Ответ: 4352
Исполнитель Редактор получает на вход строку символов и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки символов.
А) заменить (v, w).
заменить (111, 27)
преобразует строку 05111150 в строку 0527150.Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w)
не меняет эту строку.Б) нашлось (v).
Дана программа для Редактора:
НАЧАЛО ПОКА нашлось (52) ИЛИ нашлось (2222) ИЛИ нашлось (1122) ЕСЛИ нашлось (52) ТО заменить (52, 11) КОНЕЦ ЕСЛИ ЕСЛИ нашлось (2222) ТО заменить (2222, 5) КОНЕЦ ЕСЛИ ЕСЛИ нашлось (1122) ТО заменить (1122, 25) КОНЕЦ ЕСЛИ КОНЕЦ ПОКА КОНЕЦ
На вход приведённой выше программе поступает строка, начинающаяся с цифры «5», а затем содержащая n цифр «2» (3 < n < 10 000).
Определите наибольшее значение n
, при котором сумма цифр в строке, получившейся в результате выполнения программы, равна 64.
Ответ: 156
🎦 Программное решение (PascalAbc.Net): YouTube и RuTube
✍ Решение:
-
✎ Решение с использованием программирования:
✎ Программное решение:
Язык pascalABC.NET (классический):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | begin var sum: biginteger; sum := 0; for var n := 4 to 9999 do begin var s := '5' + '2' * n; while ('52' in s) or ('2222' in s) or ('1122' in s) do begin if '52' in s then s := s.Replace('52', '11', 1); if '2222' in s then s := s.Replace('2222', '5', 1); if '1122' in s then s := s.Replace('1122', '25', 1); end; var numb := s.ToBigInteger; while numb > 0 do begin sum += numb mod 10; numb := numb div 10; end; if sum = 64 then print(n); sum := 0; end; end. |
Язык Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 | res = set() for n in range(10, 1000): s = '5' + '2'*n while '52' in s or '2222' in s or '1122' in s: if '52' in s: s = s.replace('52', '11', 1) if '2222' in s: s = s.replace('2222', '5', 1) if '1122' in s: s = s.replace('1122', '25', 1) if sum(map(int, s)) == 64 : res.add(n) print(max(res)) |
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате
применения поразрядной конъюнкции к заданному адресу узла и маске сети.
Сеть задана IP-адресом 192.168.32.160 и маской сети 255.255.255.240.
Сколько в этой сети IP-адресов, для которых сумма единиц в двоичной записи IP-адреса чётна?
В ответе укажите только число.
Ответ: 8
✍ Решение:
-
✎ Аналитическое решение:
Для начала вспомним, что маска в двоичном коде всегда имеет структуру: сначала все единицы, затем все нули:
1…10…0
. Число 255 в двоичной с.с. представляет собой 8 единиц. Т.е. в нашем случае маска:
11111111.11111111.11111111.11110000
Последний байт: 24010 = 111100002
192 = 11000000 168 = 10101000 32 = 00100000 160 = 10100000
10100000 & 11110000 1010????
24 = 16
16 / 2 = 8
✎ Программное решение:
Язык pascalABC.NET (классический):
Язык Python:
from ipaddress import * net = ip_network('192.168.32.160/255.255.255.240') print(len([1 for ip in net if bin(int(ip))[2:].count('1') % 2 == 0])) |
Ответ: 8
Пример 1:
Операнды арифметического выражения записаны в системе счисления с основанием 19.
98897x2119 + 2x92319
В записи чисел переменной x
обозначена неизвестная цифра из алфавита 19-ричной системы счисления.
Определите наибольшее значение x
, при котором значение данного арифметического выражения кратно 18.
Для найденного x
вычислите частное от деления значения арифметического выражения на 18 и укажите его в ответе в десятичной системе счисления.
Основание системы счисления указывать не нужно.
ИЛИ
Пример 2:
Значение арифметического выражения
3 ∙ 31258 + 2 ∙6257 – 4 ∙6256 + 3 ∙1255 – 2 ∙254 – 2024
записали в системе счисления с основанием 25. Сколько значащих нулей
содержится в этой записи?
Ответ: Пример1: 469034148 Пример2: 9
🎦 Программное решение (PascalAbc.Net): YouTube и RuTube
✍ Решение:
-
✎ Программное решение:
Язык pascalABC.NET (классический):
uses school; begin foreach var x in '0123456789abcdefghi'do begin var a:=('98897'+x+'21'); // строковое значение var b:=('2'+x+'923');// строковое значение var a1:= dec(a,19); // перевод в десятичную сс var b1:=dec(b,19); var s:=a1 + b1; if s mod 18 =0 then begin //print(x,s); print((s/18)); end; end; end. |
Язык python:
for x in '0123456789abcdefghi'[::-1]: sm = int(f'98897{x}21', 19) + int(f'2{x}923', 19) if sm % 18 == 0: print(sm // 18) break |
Язык pascalABC.NET (классический):
## uses school; var n:=3*3125bi**8 + 2*625bi**7 - 4*625bi**6 + 3*125bi**5 -2*25bi**4 - 2024; toBase(n,25).CountOf('0').Print; |
Язык python:
x = 3*3125**8 + 2*625**7 – 4*625**6 + 3*125**5 – 2*25**4 – 2024 k = 0 while x > 0: if x % 25 == 0: k += 1 x //= 25 print(k) |
Для какого наименьшего целого неотрицательного числа A
выражение
(x + 2y < A) ∨ (y > x) ∨ (x > 60)
тождественно истинно, т.е. принимает значение 1 при любых целых неотрицательных x
и y
?
Ответ: 181
🎦 Программное решение (PascalAbc.Net): YouTube и RuTube
✍ Решение:
-
✎ Теоретическое решение:
✎ Программное решение:
Язык pascalABC.NET (классический):
begin for var A := 1 to 200 do begin var ok := 1; for var x := 1 to 500 do for var y := 1 to 500 do begin if (x + 2 * y < A) or (y > x) or (x > 60)=false then begin ok:=0; end; end; if ok=1 then print(a); end; end. |
Язык Python:
def f(A, x ,y): return (x +2*y < A) or (y > x) or (x > 60) for A in range(1000): if all(f(A, x ,y) for x in range(1000) for y in range(1000)): print(A) break |
Алгоритм вычисления значения функции F(n), где n
– натуральное число, задан следующими соотношениями:
F(n) = n при n > 2024; F(n) = n × F(n + 1), если n ≤ 2024
Чему равно значение выражения F(2022) / F(2024)
?
Ответ: 4090506
🎦 Программное решение (PascalAbc.Net): YouTube и RuTube
✍ Решение:
✎ Программное решение:
PascalABC.NET:
Решается только с типом данных BigInteger!
1 2 3 4 5 6 7 8 9 | function f(n: integer): biginteger; begin if n > 2024 then result := n else result := n * f(n + 1); end; begin print(f(2022) / f(2024)); end. |
Питон:
1 2 3 4 5 6 | def f(n): if n>2024: return n else: return n*f(n+1) print(f(2022)/f(2024)) |
C++:
1 |
Ответ: 4090506
В файле содержится последовательность натуральных чисел, каждое из которых не превышает 100 000. Определите количество троек элементов последовательности, в которых ровно два из трёх элементов являются трёхзначными числами, а сумма элементов тройки не больше максимального элемента последовательности, оканчивающегося на 13.
Гарантируется, что в последовательности есть хотя бы одно число, оканчивающееся на 13. В ответе запишите количество найденных троек чисел, затем максимальную из сумм элементов таких троек.
В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.
Ответ: 959 | 97471
🎦 Программное решение (PascalAbc.Net): YouTube и RuTube
✍ Решение:
-
✎ Программное решение:
Язык pascalABC.NET (классический):
## var a := ReadLines('17_2024.txt').Select(t -> t.ToInteger).ToArray; var counter := 0; var maxSum := 0; var m := 0; for var i := 0 to a.High do begin if a[i] mod 100 = 13 then m := max(a[i], m); end; for var i := 0 to a.High - 2 do begin if((a[i] in 100..999) and (a[i + 1] in 100..999) and (not (a[i + 2] in 100..999))) or ((a[i + 1] in 100..999) and (a[i + 2] in 100..999) and (not (a[i] in 100..999))) or ((a[i] in 100..999) and (a[i + 2] in 100..999) and (not (a[i + 1] in 100..999))) then if (a[i] + a[i + 1] + a[i + 2]) <= m then begin counter += 1; maxSum := max(maxSum, (a[i] + a[i + 1] + a[i + 2])); end; end; println(counter, maxSum) |
Язык pascalABC.NET (LINQ):
## uses school; var a := ReadLines('17_2024.txt').Select(t -> t.ToInteger); var m:=a.where(x->x mod 100 = 13).max; var triples := a.NWise(3) .Where(\(a,b,c)->((a in 100..999) and (b in 100..999) and (not (c in 100..999 ))) or ((b in 100..999) and (c in 100..999) and (not (a in 100..999 ))) or ((a in 100..999) and (c in 100..999) and (not (b in 100..999 )))) .Where (\(a,b,c)-> a+b+c<=m); triples.Count.Print; var maxSum:=triples.Select(t->(t[0]+t[1]+t[2])).max.print; |
Язык Python:
# Функция, возвращающая, является ли число трехзначным. def d3(x): return 100 <= x <= 999 # считываем последовательность из файла nums = [int(x) for x in open('17_2024.txt')] # ищем максимальное значение, оканчивающееся на 13 max13 = max(x for x in nums if x % 100 == 13) # создаем список для сумм s = [] # переберем все тройки for a, b, c in zip(nums, nums[1:], nums[2:]): if d3(a) + d3(b) + d3(c) == 2 and a+b+c <= max13: s.append(a+b+c) # вывод print(len(s), max(sm)) |
Квадрат разлинован на N × N клеток (1 < N < 30). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. По команде вправо Робот перемещается в соседнюю правую клетку, по команде вниз – в соседнюю нижнюю.
Квадрат ограничен внешними стенами. Между соседними клетками квадрата также могут быть внутренние стены. Сквозь стену Робот пройти не может.
Перед каждым запуском Робота в каждой клетке квадрата лежит монета достоинством от 1 до 100. Посетив клетку, Робот забирает монету с собой; это также относится к начальной и конечной клеткам маршрута Робота.
В «угловых» клетках поля – тех, которые справа и снизу ограничены стенами, Робот не может продолжать движение, поэтому накопленная сумма считается итоговой. Таких конечных клеток на поле может быть несколько, включая правую нижнюю клетку поля. При разных запусках итоговые накопленные суммы могут различаться.
Определите максимальную и минимальную денежные суммы, среди всех возможных итоговых сумм, которые может собрать Робот, пройдя из левой верхней клетки в конечную клетку маршрута. В ответе укажите два числа –
сначала максимальную сумму, затем минимальную.
Исходные данные представляют собой электронную таблицу размером N×N, каждая ячейка которой соответствует клетке квадрата. Внутренние и внешние стены обозначены утолщёнными линиями.
Ответ: 2167 | 718
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один камень или увеличить количество камней в куче в два раза. Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней.
Игра завершается в тот момент, когда количество камней в куче становится не менее 129. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из 129 или больше камней.
В начальный момент в куче было S
камней, 1 ≤ S ≤ 128
.
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.
Укажите минимальное значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.
Ответ: 64
Для игры, описанной в задании 19, найдите два наименьших значения S
, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:
Найденные значения запишите в ответе в порядке возрастания.
Ответ: 32 | 63
Для игры, описанной в задании 19, найдите минимальное значение S
, при котором одновременно выполняются два условия:
Если найдено несколько значений S
, в ответе запишите минимальное из них.
Ответ: 62
В файле содержится информация о совокупности N
вычислительных процессов, которые могут выполняться параллельно или последовательно. Будем говорить, что процесс B зависит от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A. В этом случае процессы A и B могут выполняться только последовательно.
Информация о процессах представлена в файле в виде таблицы. В первой строке таблицы указан идентификатор процесса (ID
), во второй строке таблицы – время его выполнения в миллисекундах, в третьей строке перечислены с разделителем «;
» ID процессов, от которых зависит данный процесс. Если процесс независимый, то в таблице указано значение 0
.
Время выполнения процесса B (мс) | ID процесса(-ов) A | |
1 | 4 | 0 |
2 | 3 | 0 |
3 | 1 | 1;2 |
4 | 7 | 3 |
Определите максимальную продолжительность отрезка времени (в мс), в течение которого возможно одновременное выполнение четырёх процессов, при условии, что все независимые друг от друга процессы могут
выполняться параллельно.
Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемого файла.
Ответ: 7
Исполнитель преобразует число на экране.
У исполнителя есть две команды, которые обозначены латинскими буквами:
А. Прибавить 1
B. Умножить на 2
C. Возвести в квадрат
Программа для исполнителя – это последовательность команд.
Сколько существует программ, для которых при исходном числе 2 результатом является число 20, при этом траектория вычислений не содержит числа 11?
Траектория вычислений программы – это последовательность результатов выполнения всех команд программы.
Ответ: 37
✍ Решение:
- Напишем программу, реализующую алгоритм поиска результата, вычисления по рекуррентным формулам организуем с помощью рекурсии.
- Рекурсивная функция, которая возвращает количество программ для преобразования числа
start
в числоx
:
PascalAbc:
function f(start, x: integer): integer; begin var k: integer; if (start > x)or (start=11) then result := 0 else if start = x then result := 1 else begin // обязательные операторные скобки k := k + f(start + 1, x) + f(start *2, x)+ f(start *start, x); result := k; end; end; begin writeln(f(2, 20)); end. |
Python:
def f(a, b): if a == b: return 1 if a > b or a == 11: return 0 return f(a+1, b) + f(a*2, b) + f(a**2, b) print(f(2, 20)) |
Ответ: 37
Текстовый файл состоит из символов T, U, V, W, X, Y и Z.
Определите в прилагаемом файле максимальное количество идущих подряд символов (длину непрерывной подпоследовательности), среди которых символ T
встречается ровно 100 раз.
Для выполнения этого задания следует написать программу.
Ответ: 133
✍ Решение:
-
Паскаль:
1 |
Python:
1 2 3 4 5 6 7 8 9 10 11 | s = open('24_2024.txt').readline() # сохраняем только длины подстрок w_len = [len(x) for x in s.split('T')] # если количество слов меньше 101, таких строк нет if len(w_len) < 101: print(0) else: # используя срез, можно не делать проверку на кол-во слов, меньшее 101 len101 = [sum(w_len[i:i+101]) for i in range(len(w_len))] print(max(len101) + 100) |
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
?
» означает ровно одну произвольную цифру;*
» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.Среди натуральных чисел, не превышающих 1010, найдите все числа, соответствующие маске 1?2157*4
, делящиеся на 2024 без остатка.
В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце – соответствующие им результаты деления этих чисел на 2024.
Количество строк в таблице для ответа избыточно.
... ... ... ... ... ...
Ответ:
142157664 70236 1021575544 504731 1121571264 554136 1221577104 603546 1321572824 652951 1421578664 702361 1521574384 751766 1621570104 801171 1721575944 850581 1821571664 899986 1921577504 949396
🎦 Программное решение (PascalAbc.Net): YouTube и RuTube
✍ Решение:
Язык pascalABC.NET (классический):
|
||||
Python Решение 1 (работа с числами):
Python Решение 2 (с библиотекой itertools):
|
||||
С++:
|
Входной файл содержит сведения о заявках на проведение мероприятий в конференц-зале. В каждой заявке указаны время начала и время окончания мероприятия (в минутах от начала суток). Если время начала одного
мероприятия меньше времени окончания другого, то провести можно только одно из них. Если время окончания одного мероприятия совпадает со временем начала другого, то провести можно оба. Определите, какое
максимальное количество мероприятий можно провести в конференц-зале и каков при этом максимально возможный перерыв между двумя последними мероприятиями.
Входные данные
В первой строке входного файла находится натуральное число N
(N ≤ 1000) – количество заявок на проведение мероприятий. Следующие N строк содержат пары чисел, обозначающих время начала и время окончания мероприятий. Каждое из чисел натуральное, не превосходящее 1440.
Запишите в ответе два числа: максимальное количество мероприятий и самый длинный перерыв между двумя последними мероприятиями (в минутах).
5 10 150 100 120 131 170 150 180 120 130
При таких исходных данных можно провести максимум три мероприятия, например, мероприятия по заявкам 2, 3 и 5. Максимальный перерыв между двумя последними мероприятиями составит 20 мин., если состоятся мероприятия по заявкам 2, 4 и 5.
Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов.
Ответ: 32 | 15
✍ Решение:
-
✎ Решение с использованием программирования:
PascalABC.net:
|
||
Python:
|
||
С++:
|
По каналу связи передаётся последовательность целых чисел – показания прибора. В течение N мин. (N – натуральное число) прибор ежеминутно регистрирует значение напряжения (в условных единицах) в электрической сети и передаёт его на сервер.
Определите три таких переданных числа, чтобы между моментами передачи любых двух из них прошло не менее K
мин., а сумма этих трёх чисел была максимально возможной. Запишите в ответе найденную сумму.
Входные данные
Даны два входных файла (файл A и файл B), каждый из которых в первой строке содержит натуральное число K
– минимальное количество минут, которое должно пройти между моментами передачи показаний, а во второй – количество переданных показаний N
(1 ≤ N ≤ 10 000 000, N > K).
В каждой из следующих N
строк находится одно целое число, по модулю не превышающее 10 000 000, которое обозначает значение напряжения в соответствующую минуту.
Запишите в ответе два числа: сначала значение искомой величины для файла А, затем – для файла B.
2 6 150 –150 20 –200 –300 0
При таких исходных данных искомая величина равна 170 – это сумма значений, зафиксированных на первой, третьей и шестой минутах измерений (150 + 20 + 0).
Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов.
Предупреждение: для обработки файла B не следует использовать переборный алгоритм, вычисляющий сумму для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго.
Ответ: 189536 | 17210
✍ Решение:
Решение для файла А (27-75a.txt
), полный перебор:
PascalABC.net:
|
||
Python:
|
||
С++:
|
Решение для файла B:
PascalABC.net:
|
||
Python Решение 1:
|
||
Python Решение 2:
|
ЕГЭ по информатике -> демоверсия ЕГЭ 2024