Разбор Демоверсии 2025 по информатике

Рейтинг: 5 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда активна
 

Задание 1. Анализ информационных моделей

На рисунке изображена схема дорог N-ского района. В таблице звездочкой обозначено наличие дороги из одного населенного пункта в другой.
 

Так как таблицу и схему рисовали независимо друг от друга, нумерация населённых пунктов в таблице никак не связана с буквенными обозначениями на графе. Определите, какова сумма протяжённостей дорог из пункта в пункт G и из пункта A в пункт C. В ответе запишите целое число.

Решение и ответ
Анализируя таблицу и граф, расставим веса вершин. Это двойки и тройки. Найдем уникальную вершину. Это вершина Е, которая соединена с двумя вершинами тройками,  1 и 3, далее находим из них ту, что выходит на двойку, то есть на А. Значит С это 1, а F это 3. Рассуждая далее, находим, что В это 2, а D это 6.
В ответ запишем сумму дорог АС + DG = 30 + 8 = 38.


Ответ: 38 

Задание 2. Построение таблиц истинности логических выражений

Миша заполнял таблицу истинности логической функции

((→ y) → x) V ¬z

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

       

((→ y) → x) V ¬z

   

1

  0
 

0

    0
 

1

0

 0

0

Пример. Функция задана выражением ¬x v y, зависящим от двух переменных, а фрагмент таблицы имеет следующий вид. В этом случае первому столбцу соответствует переменная y, а второму столбцу – переменная x. В ответе следует написать yx.

Решение и ответ

ИЛИ

print ('x y w z')
for x in range(2):
    for y in range(2):
        for w in range(2):
            for z in range(2):
                f = ((w <=y) <=x) or not z
                if not f:
                    print(x, y, w, z)

получим таблицу:

x y w z
0 0 0 1
0 1 0 1
0 1 1 1

первый столбец z (все 1), последний х (все значения 0)
и определим, что единственное решение, это - ZYWX

Ответ: ZYWX

Задание выполняется с использованием прилагаемых файлов

Задание 3. Базы данных. Файловая система

Файл с данными

В файле приведён фрагмент базы данных «Кондитерские изделия» о поставках конфет и печенья в магазины районов города. База данных состоит из трёх таблиц. Таблица «Движение товаров» содержит записи о поставках товаров в магазины в течение первой половины июня 2023 г., а также информацию о проданных товарах. Поле Тип операции содержит значение Поступление или Продажа, а в соответствующее поле Количество упаковок, шт. внесена информация о том, сколько упаковок товара поступило в магазин или было продано в течение дня. Заголовок таблицы имеет следующий вид.

2024 3 1

Таблица «Товар» содержит информацию об основных характеристиках каждого товара. Заголовок таблицы имеет следующий вид.

2024 3 2

Таблица «Магазин» содержит информацию о местонахождении магазинов. Заголовок таблицы имеет следующий вид.

2024 3 3

Используя информацию из приведённой базы данных, определите общую массу (в кг) всех видов зефира, полученных магазинами, расположенными на проспекте Революции, за период со 2 по 10 августа включительно. В ответе запишите только число.

 

Решение и ответ
На 3 листе применив фильтры, найдем ID магазинов.

 

Затем на 2 листе узнаем каким артикулам соответствуют разные вида зефира и какой вес упаковок

 

 На листе движение товаров найдем количество упаковок зефира каждого вида, поступившего в продажу  в магазинах М10 и М15 со 2 по 10 августа.

 

 Каждого вида зефира получилось по 1000 упаковок .

1000 * (0, 25 + 0, 8 + 0, 5 + 1) = 2550 кг

Ответ: 2550

Задание 4. Кодирование и декодирование информации

По каналу связи передаются шифрованные сообщения, содержащие только десять букв: А, B, C, D, E, F, S, X, Y, Z; для передачи используется неравномерный двоичный код. Для кодирования букв используются кодовые слова.

А 00 F 1001
B   S 1100
C 010 X 1010
D 011 Y 1101
Е 1011 Z 111

Укажите кратчайшее кодовое слово для буквы B, при котором код удовлетворяет условию Фано. Если таких кодов несколько, укажите код с наименьшим числовым значением.
Примечание. Условие Фано означает, что никакое кодовое слово не является началом другого кодового слова. Это обеспечивает возможность однозначной расшифровки закодированных сообщений.

Решение и ответ

Построив дерево вариантов, получим свободную позицию для буквы В, это 1000.

Ответ: 1000

Задание 5. Анализ и построение алгоритмов для исполнителей

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа
N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если число чётное, то к двоичной записи числа слева дописывается 10;
б) если число нечётное, то к двоичной записи числа слева дописывается 1 и справа дописывается 01.
Полученная таким образом запись является двоичной записью искомого числа
R.
3. Результат переводится в десятичную систему и выводится на экран.

Например, для исходного числа 410 = 1002 результатом является число 2010 = 101002, а для исходного числа 510 = 1012 это число 5310 =1101012.
Укажите максимальное число
R, которое может быть результатом работы данного алгоритма, при условии, что N не больше 12. В ответе запишите это число в десятичной системе счисления.

Решение и ответ

Переведем алгоритм на язык программирования

for N in range(12): #перебираем по порядку N
 N1 = bin(N)[2:] #переводим в бинарный код
 if N % 2 == 0: # в зависимости от четности выполняется условие
  N1 = '10' + N1
 else:
  N1 = '1' + N1 + '01'
 R = int(N1, 2) # переводим число R в целое число
 print(N, R)

 

В полученных значениях N и R находим нужную строку, это число 109.

Ответ: 109

Задание 6. Анализ программ

Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения.

У исполнителя существует 6 команд:
Поднять хвост, означающая переход к перемещению без рисования;
Опустить хвост, означающая переход в режим рисования;
Вперёд n (где n– целое число), вызывающая передвижение Черепахи на n единиц в том направлении, куда указывает её голова;
Назад n (где n– целое число), вызывающая передвижение в противоположном голове направлении;
Направо (где m– целое число), вызывающая изменение направления движения
на
m градусов по часовой стрелке,
Налево m (где m– целое число), вызывающая изменение направления движения на m градусов против часовой стрелки.
Запись
Повтори k [Команда1 Команда2 … КомандаS] означает, что последовательность из S команд повторится k раз.

Черепахе был дан для исполнения следующий алгоритм:
Повтори 9 [Вперёд 22 Направо 90 Вперёд 6 Направо 90]
Поднять хвост
Вперёд 1 Направо 90 Вперёд 5 Налево 90
Опустить хвост
Повтори 9 [Вперёд 53 Направо 90 Вперёд 75 Направо 90]

Определите периметр области пересечения фигур, ограниченных заданными алгоритмом линиями.

Решение и ответ

Сначала построим в Кумире фигуру:

Получилась фигура, состоящая из двух пересекающихся прямоугольников.
Ее периметр нетрудно посчитать: ширина - 1, длина 22 - 1. Периметр 44.

Ответ: 44

Задание 7. Кодирование и декодирование информации. Передача информации

Прибор автоматической фиксации нарушений правил дорожного движения делает цветные фотографии размером 1024×768 пикселей, используя палитру из 4096 цветов. Снимки сохраняются в памяти камеры, группируются в пакеты по несколько штук, а затем передаются в центр обработки информации со скоростью передачи данных 1 310 720 бит/с.
Каково максимально возможное количество снимков в одном пакете, если на передачу одного пакета отводится не более 300 секунд?

В ответе запишите целое число.

 

Решение и ответ
1) Найдем размер одной фотографии

N = 2 i
I = K · i

N = 4096 = 212i = 12 бит
К = 1024 · 768 = 768 · 210 = 3 · 256 · 210 = 3 · 218 пикселей

I1 =3 · 218 ·12 = 36 · 218 = 9 · 220 бит - вес одной фотографии

2)Найдем максимальный вес пакета

I = v · t

Iпакета = 1310720 · 300 = 393216000 бит = 160 · 213 · 300 = 16 · 213 · 3 · 8 · 125 = 375 · 220 бит

3) Найдем максимальное количество фотографий в пакете

k = I пакета / I1

k = (375 · 220)/(9 · 220) = 41,(6)

Ответ: 41

Задание 8. Перебор слов и системы счисления

Определите количество 12-ричных пятизначных чисел, в записи которых ровно одна цифра 7 и не более трёх цифр с числовым значением, превышающим 8.

Решение и ответ

alf = '0123456789AB'
k = 0
for x1 in alf[1:]:
    for x2 in alf:
        for x3 in alf:
            for x4 in alf:
                for x5 in alf:
                    x = x1 + x2 + x3 + x4 + x5
                    if x.count('7') == 1 and (x.count('9') + x.count('A') + x.count('B')<=3):
                        k +=1

print(k)

Ответ: 67476

Задание выполняется с использованием прилагаемых файлов

Задание 9. Работа с таблицами

Файл с данными

Откройте файл электронной таблицы, содержащей в каждой строке шесть натуральных чисел. Определите количество строк таблицы, содержащих числа, для которых выполнены оба условия:
– в строке только одно число повторяется трижды, остальные числа различны;
– квадрат суммы всех повторяющихся чисел строки больше квадрата суммы всех её неповторяющихся чисел.

В ответе запишите только число

Решение и ответ
При помощи формулы СЧЕТЕСЛИ посчитаем в следующих вспомогательных 6 столбцах сколько раз встречается каждое из чисел.


Далее в столбце N найдем количество троек.

Далее в столбце O найдем сумму значений в столбцах H:M. Сумма должна равняться 12, чтобы соблюдалось условие.

 

Проверим соблюдение первого условия в столбце W. Таблица большая, поэтому дальше работаем с фильтром, выключим нули.

В столбце G найдем сумму чисел в столбцах A..F

Добавим столбцы для проверки 2 условия. В столбцах P..U выведем повторяющиеся числа.

 

Сумму этих значений поместим в столбец V. 

 Добавим второе условие к формуле в столбце W.

 

Сумма значений столбца W будет ответом на задачу.

Ответ: 273

Задание выполняется с использованием прилагаемых файлов

Задание 10. Поиск символов в текстовом редакторе

Файл с данными

C помощью текстового редактора определите, сколько раз встречается сочетание букв «по» или «По» в составе других слов, включая сложные слова, соединённые дефисом, но не как отдельное слово в тексте глав XII и XIV третьей части тома 2 романа Л.Н. Толстого «Война и мир». В ответе
укажите только число.

Решение и ответ
В текстовом редакторе используем инструмент расширенный поиск. В строке поиска пишем по. Ставим галочку все словоформы. Потом выделяем 12 главу III части и указываем текущий фрагмент поиска. Получим 50. Далее ставим галочку слово целиком и снова выделяем 12 главу III части, указываем текущий фрагмент. Получим 3 соответствия. Значит в 12 главе ответом  будет 50 - 3 = 47.

Проделаем те же действия в 14 главе III части, получим 62 - 7 = 55. Итого по двум главам, 47 + 55 = 103

Ответ: 103

Задание 11. Вычисление количества информации

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

Известно, что для хранения 2000 серийных номеров отведено не более 693 Кбайт памяти. Определите максимально возможную длину серийного номера.

В ответе запишите только целое число.

Решение и ответ

N: {десятичные цифры + 52 буквы + 963 символа специального алфавита} - всего 1025 символов

N = 2 i,  1025 > 1024 ⇒ 2048 = 211, значит для кодирования одного символа нужно 11 бит

I = K · i, ⇒ k = I/i

I1=(693 · 210 ) / 2000 ≈ 354 байта округляем до целого числа байт

k<=(354 · 8)/11 = 257,(45) округляем в меньшую сторону, чтобы поместились номера

Ответ: 257

Задание 12. Выполнение алгоритмов для исполнителей

Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.

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

Б) нашлось (v)
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется.

Цикл
 ПОКА условие
  последовательность команд
 КОНЕЦ ПОКА
выполняется, пока условие истинно.

В конструкции
 ЕСЛИ условие
  ТО команда 1
 КОНЕЦ ЕСЛИ выполняется команда 1 (если условие истинно).

В конструкции
 ЕСЛИ условие
  ТО команда 1
  ИНАЧЕ команда 2
 КОНЕЦ ЕСЛИ выполняется команда 1 (если условие истинно) или команда 2 (если условие ложно).

Какая строка получится в результате применения приведенной ниже программы к строке, состоящей из 81 идущей подряд цифры 1?

НАЧАЛО
ПОКА нашлось (11111) ИЛИ нашлось (888)
 ЕСЛИ нашлось (11111)
  ТО заменить (11111, 88)
 ИНАЧЕ заменить (888, 8)
 КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

Решение и ответ

s  = 81 * '1'
while '11111' in s or '888' in s:
    if '11111' in s:
        s = s.replace('11111', '88',1)
    else:
        s = s.replace('888', '8')

print (s)

Ответ: 881

Задание 13. Организация компьютерных сетей. Адресация

В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети.

Сеть задана IP-адресом 172.16.168.0 и маской сети 255.255.248.0. Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса не кратно 5?

В ответе укажите только число

Решение и ответ
узел в сети: 172. 16. 168. 0
маска: 255. 255. 248. 0
адрес сети: 172. 16. 168. 0

Переведем в двоичный код

10101100. 00001000. 10101000. 00000000 - узел в сети
11111111. 11111111. 11111000. 00000000 - маска
10101100. 00001000. 10101000. 00000000 - адрес сети

В маске первые 21 единицы, значит последние 11 нулей соответствуют неизвестным узлам сети.
В сети уже имеется 8 единиц, значит для того, чтобы адрес был не кратен 5, 
из последующих 11 неизвестных позиций, мы можем использовать адрес с 0,1, 3, 4, 5, 6, 8, 9, 10, 11 единицами.

Для этого воспользуемся формулой для вычисления количества перестановок с повторениями:

1) 0 единиц -  10101100. 00001000. 10101000. 00000000 -1 вариант
2) 1 единица - 11 вариантов
3) 3 единицы ⇒  P = 11! / (3! ⋅ 8!) = (11· 10 · 9) / 6 = 165 вариантов
4) 4 единицы ⇒ P = 11! / (4! ⋅ 7!) = (11· 10 · 9 · 8) / 24 = 330 вариантов
5) 5 единиц ⇒ P = 11! / (5! ⋅ 6!) = (11· 10 · 9 · 8 · 7) / 120 = 462 варианта
6) 6 единиц  ⇒ P = 11! / (6! ⋅ 5!) = (11· 10 · 9 · 8 · 7) / 120 = 462 варианта
7) 8 единиц ⇒  P = 11! / (8! ⋅ 3!) = (11· 10 · 9) / 6 = 165 вариантов
8) 9 единиц ⇒  P = 11! / (9! ⋅ 2!) = (11· 10) / 2 = 55 вариантов
10) 10 единиц - 11 вариантов
11) 11 единиц - 1 вариант

Всего 1663 различных варианта

Ответ: 1663

Задание 14. Кодирование чисел. Системы счисления

Операнды арифметического выражения записаны в системе счисления с основанием 19.

98897x2119 + 2x92319

В записи чисел переменной x обозначена неизвестная цифра из алфавита 19-ричной системы счисления.

Определите наибольшее значение x, при котором значение данного арифметического выражения кратно 18. Для найденного x вычислите частное от деления значения арифметического выражения на 18 и укажите его в ответе в десятичной системе счисления. Основание системы счисления указывать не нужно.

ИЛИ

Значение арифметического выражения

3 ∙ 31258 + 2 ∙ 6257 – 4 ∙ 6256 + 3 ∙ 1255 – 2 ∙ 254 – 2025

записали в системе счисления с основанием 25. Сколько значащих нулей содержится в этой записи?

ИЛИ

Значение арифметического выражения 7170 + 7100 – x, где x – целое положительное число, не превышающее 2030, записали в 7-ричной системе счисления. Определите наибольшее значение x, при котором в 7-ричной записи числа, являющегося значением данного арифметического выражения, содержится ровно 71 нуль.

В ответе запишите число в десятичной системе счисления.

Решение и ответ
1)
for x in '0123456789abcdefghi':
 a = '98897' + x + '21'
 b = '2' + x + '923'
 c = int(a,19) + int(b, 19)
 if c % 18 == 0 :
  print(x, c // 18)

2)
x = 3 * 3125**8 + 2 * 625**7 - 4 * 625**6 + 3 * 125**5 - 2 * 25**4 - 2024
count = 0
while x > 0:
 if x % 25 == 0:
  count += 1
 x = x // 25
print(count)

3)
for x in range(2030, 0, -1):
    count = 0
    y = 7 **170 + 7 ** 100  - x
    while y > 0:
        if y % 7 == 0:
            count += 1
        y = y // 7

    if count == 71:
        print(x)
        break

Ответ: 469034148 или 10 или 2029

Задание 15. Преобразование логических выражений

На числовой прямой даны два отрезка: P = [15; 40] и Q = [21; 63].

Укажите наименьшую возможную длину такого отрезка A, для которого логическое выражение

(x ∈ P) → (((x ∈ Q) & ¬(x ∈ A)) → ¬(x ∈ P))

истинно (т.е. принимает значение 1) при любом значении переменной х.

Решение и ответ

P = range(15,41)
Q = range(21,64)
A = []

for x in range (100):
    f = (x in P) <= ( ((x in Q) and (not(x in A))) <= (not (x in P)) )
    if not f:
        A.append(x)

print (max(A) - min(A))

Ответ: 19

Задание 16. Рекурсивные алгоритмы

Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями:

F(n) = 1 при n = 1;

F(n) = n × F(n - 1), если n > 1.

Чему равно значение выражения (F(2024) + 2 * F(2023)) / F(2022)?

Решение и ответ
Значение данной функции проще и быстрее вычислить, выразив через F(2022) и сократив выражение:

(F(2024) + 2 * F(2023)) / F(2022) = (2024 * F(2023)  + 2 * F(2023)) / (F(2022) = (F(2023) * 2026)/ (F(2022)=
(2023 * F(2022) * 2026)/ (F(2022) = 2023 * 2026 = 4 092 528

Ответ: 4 092 528

Задание выполняется с использованием прилагаемых файлов

Задание 17. Проверка на делимость

Файл с данными

В файле содержится последовательность натуральных чисел. Её элементы могут принимать целые значения от 1 до 100 000 включительно. Определите количество пар последовательности, в которых остаток от деления хотя бы одного из элементов на 16 равен минимальному элементу последовательности. В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче по

Решение и ответ
f = open('demo_2025_17.txt')
p = [int(i) for i in f]
f.close()
M = 0
count = 0
M2 = 0

M = min(p)

for i in range(len(p) -1):
      s = p[i] + p[i+1]
      if abs(p[i])% 16 == M or abs(p[i + 1])% 16 == M:
          count += 1
          M2 = max(M2, s)

print(count, M2)

Ответ: 1214    176024

Задание выполняется с использованием прилагаемых файлов

Задание 18. Робот-сборщик монет

Файл с данными

Квадрат разлинован на N×N клеток (1 < N < 30). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. По команде вправо Робот перемещается в соседнюю правую клетку, по команде вниз — в соседнюю нижнюю. Квадрат ограничен внешними стенами. Между соседними клетками квадрата также могут быть внутренние стены. Сквозь стену Робот пройти не может. Перед каждым запуском Робота в каждой клетке квадрата лежит монета достоинством от 1 до 100. Посетив клетку, Робот забирает монету с собой; это также относится к начальной и конечной клетке маршрута Робота. В «угловых» клетках поля – тех, которые справа и снизу ограничены стенами, Робот не может продолжать движение, поэтому накопленная сумма считается итоговой. Таких конечных клеток на поле может быть несколько, включая правую нижнюю клетку поля. При разных запусках итоговые накопленные суммы могут различаться.

Определите максимальную и минимальную денежную сумму, которую может собрать Робот, пройдя из левой верхней клетки в правую нижнюю. В ответ запишите два числа друг за другом без разделительных знаков — сначала максимальную сумму, затем минимальную.

Исходные данные представляют собой электронную таблицу размером N×N, каждая ячейка которой соответствует клетке квадрата. Пример входных данных:

Решение и ответ
Ctrl+A Уменьшим ширину всех столбцов таблицы до 5. Скопируем таблицу рядом вместе со стенками и очистим ее клавишей Del.
Начинаем заполнение.
V1 = A1, W1=V1+B1 и протягиваем право, V2 =V1+A2 и протягиваем вниз,
W2 = МАКС(W1;V2)+B2 и протягиваем на всю таблицу копируя только значения, стенки не трогаем. Затем копируем формулы в верхней строке соответствующих ячеек и заполняем под стенами, копируем формулы в первом столбце соответствующих ячеек и заполняем ячейки правее стенок.

Находим максимальное значение из трех тупиковых клеток. Это 2671.
Далее Ctrl+H и заменяем МАКС на МИН. Получим:


Ищем минимальное значение в тупиковых клетках. Это 419.

Ответ: 2671 419 

Задание 19. Выигрышная стратегия

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может: убрать из кучи два камня или убрать из кучи пять камней или уменьшить количество камней в куче в три раза (количество камней, полученное при делении, округляется до меньшего).

Например, из кучи в 20 камней за один ход можно получить кучу из 18, 15 или 6 камней.
Игра завершается, когда количество камней в куче становится не более 19.
Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 19 или меньше камней. В начальный момент в куче было
S камней, S ≥ 20.
Будем говорить, что игрок имеет
выигрышную стратегию, если он может выиграть при любых ходах противника.
Укажите минимальное значение
S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом. 

Решение и ответ

Ответ: 60 

Задание 20. Выигрышная стратегия

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

Найденные значения запишите в ответе в порядке возрастания.

Решение и ответ

 

Ответ: 62 63

Задание 21. Выигрышная стратегия

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

Решение и ответ

Ответ: 64 

Задание выполняется с использованием прилагаемых файлов

Задание 22. Анализ программы с циклами и условными операторами

Файл с данными

В файле содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Приостановка выполнения процессов не допускается. Будем говорить, что процесс B зависит от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A.
В этом случае процессы могут выполняться только последовательно.

Информация о процессах представлена в файле в виде таблицы. В первой строке таблицы указан идентификатор процесса (ID), во второй строке таблицы – время его выполнения в миллисекундах, в третьей строке перечислены с разделителем «;» ID процессов, от которых зависит данный процесс. Если процесс является независимым, то в таблице указано значение 0.

Типовой пример организации данных в файле:


Определите максимальную продолжительность отрезка времени (в мс), в течение которого возможно одновременное выполнение максимального количества процессов, при условии, что все независимые друг от друга процессы могут выполняться параллельно и время окончания работы всех процессов минимально.

Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемого файла.

Решение и ответ
Для этого построим таблицу, в которой наглядно видно выполнение всех процессов.
Причем, процессы 101-108 можно подвинуть на 1 мс., но это не изменит максимальное время выполнения 4-х процессов равное 5 мс.


Ответ: 5

Задание 23. Анализ программы с циклами и условными операторами

Исполнитель преобразует число на экране. У исполнителя есть две команды, которые обозначены латинскими буквами:

A. Вычти 2
B. Найди целую часть от деления на 2

Программа для исполнителя – это последовательность команд. Сколько существует программ, для которых при исходном числе 38 результатом является число 2 и при этом траектория вычислений содержит число 16? Траектория вычислений программы – это последовательность результатов выполнения всех команд программы.

Например, для программы ABB при исходном числе 13 траектория состоит из чисел 11, 5, 2

Решение и ответ
def f(x, y):
    if x == y:
        return 1
    if x < y:
        return 0
    else:
        return f(x - 2, y) + f (x // 2, y)

print (f(38, 16) * f(16, 2))

Ответ: 36

Задание выполняется с использованием прилагаемых файлов

Задание 24. Анализ программы с циклами и условными операторами

Файл с данными

Текстовый файл состоит из цифр 0, 6, 7, 8, 9 и знаков арифметических операций «–» и «*» (вычитание и умножение). Определите максимальное количество символов в непрерывной последовательности, которая является корректным арифметическим выражением с целыми неотрицательными числами. В этом выражении никакие два знака арифметических операций не стоят рядом, в записи чисел отсутствуют незначащие (ведущие) нули и число 0 не имеет знака.

В ответе укажите количество символов

Решение и ответ
 f=open('demo_2025_24.txt')
p= f.readline()
f.close()
M = 0
p = p.replace('**', ' ')
p = p.replace('--', ' ')
p = p.replace('-*', ' ')
p = p.replace('*-', ' ')
p = p.replace('-06', ' 6')
p = p.replace('*06', ' 6')
p = p.replace('-07', ' 7')
p = p.replace('*07', ' 7')
p = p.replace('-08', ' 8')
p = p.replace('*08', ' 8')
p = p.replace('-09', ' 9')
p = p.replace('*09', ' 9')

for i in p.split():
    if i[0]!= '-':
        M = max(M, len(i))
    else:
        M = max(M, len(i)- 1) 
print(M)

Ответ: 154

Задание 25. Анализ программы с циклами и условными операторами

Пусть M – сумма минимального и максимального натуральных делителей целого числа, не считая единицы и самого числа. Если таких делителей у числа нет, то считаем значение M равным нулю. Напишите программу, которая перебирает целые числа, бо́льшие 800 000, в порядке возрастания и ищет среди них такие, для которых M оканчивается на 4.

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

Например, для числа 20 М = 2 + 10 = 12. Количество строк в таблице для ответа избыточно

ИЛИ

Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
– символ «?» означает ровно одну произвольную цифру;
– символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность. Например, маске 123*4?5 соответствуют числа 123405 и 12300405.

Среди натуральных чисел, не превышающих 1010, найдите все числа, соответствующие маске
3?12?14*5, делящиеся на 1917 без остатка.
В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце – соответствующие им результаты деления этих чисел на 1917. Количество строк в таблице для ответа избыточно.

Решение и ответ
1)

x = 800000
count = 0

while count <5:
    for d in range (2, int(x**0.5)):
        if x % d == 0:
            M = d + x //d
            break

    if M % 10 ==4:
            print (x, M)
            count +=1
    x += 1

2)
from fnmatch import *
for x in range(0, 10**10 +1, 1917):
 if fnmatch(str(x),'3?12?14*5'):
        print(x, x // 1917)
Ответ: 
800004   400004
800009   114294
800013   266674
800024   400014
800033   61554

ИЛИ

351261495   183235
3212614035   1675855
3412614645   1780185
3712414275   1936575
3912414885   2040905

Задание выполняется с использованием прилагаемых файлов

Задание 26. Анализ программы с циклами и условными операторами

Файл с данными

Во время сессии студенты сдают 4 экзамена, за каждый из которых можно получить от 2 до 5 баллов. Студенты, получившие хотя бы одну «двойку», считаются не сдавшими сессию.

Результаты сессии публикуются в виде рейтингового списка, в котором сначала указаны идентификационные номера студентов (ID), сдавших сессию, в порядке убывания среднего балла за сессию, а в случае равенства средних баллов – в порядке возрастания ID. Затем располагаются ID студентов, не сдавших сессию: сначала – получивших одну «двойку», затем – две «двойки», потом ID студентов с тремя «двойками» и, наконец,  ID студентов, получивших по 2 балла за каждый из экзаменов. Если студенты имеют одинаковое количество «двоек», то их ID в рейтинге располагаются в порядке возрастания. Повышенную стипендию получают студенты, занявшие в рейтинговом списке первые 25 % мест, при условии отсутствия у них «двоек». Гарантируется, что без «двоек» сессию сдали не менее 25 % студентов. Найдите ID студента, который занимает последнее место среди студентов с повышенной стипендией, а также ID первого в рейтинговом списке студента, который имеет более двух «двоек». В ответе запишите два целых положительных числа: сначала ID студента, который занимает последнее место среди студентов с повышенной стипендией, затем ID первого в рейтинговом списке студента, который имеет более двух «двоек».

Входные данные

В первой строке входного файла находится число N, обозначающее количество студентов (целое положительное число, не превышающее 10 000). Каждая из следующих N строк содержит 5 чисел через пробел: ID студента (целое положительное число, не превышающее 100 000) и четыре оценки, полученные им за сессию. Гарантируется, что общее число студентов N кратно 4 и хотя бы один студент имеет более двух «двоек». Во входном файле все ID различны. Выходные данные Два натуральных числа: искомые ID студентов в порядке, указанном в условии задачи.

Типовой пример организации данных во входном файле

Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов.

Решение и ответ

Откроем файл в excel с разделителями пробелами. Первое значение количество студентов можно удалить. 
Далее найдем средний балл студентов.

 
Далее считаем количество двоек у студентов

Далее применим многоуровневую сортировку

Осталось найти последнюю строку среди 25% лучших студентов. Это 0,25*9964 = 2491 строка. И ID студента 52326.

И первую строку среди тех, кто получил более 2 двоек. Это студент с ID 635.

 
 Ответ:  52326    635

Задание выполняется с использованием прилагаемых файлов

Задание 27. Анализ программы с циклами и условными операторами

Файлы txt

Файл A
Файл B

Файлы xls

Файл A
Файл B

Учёный решил провести кластеризацию некоторого множества звёзд по их расположению на карте звёздного неба. Кластер звёзд – это набор звёзд (точек) на графике, лежащий внутри прямоугольника высотой H и шириной W. Каждая звезда обязательно принадлежит только одному из кластеров. Истинный центр кластера, или центроид, – это одна из звёзд на графике, сумма расстояний от которой до всех остальных звёзд кластера минимальна.

Под расстоянием понимается расстояние Евклида между двумя точками A(x1, y1) и B(x2, y2) на плоскости, которое вычисляется по формуле:

В файле A хранятся данные о звёздах двух кластеров, где H=3, W=3 для каждого кластера. В каждой строке записана информация о расположении на карте одной звезды: сначала координата x, затем координата y. Значения даны в условных единицах. Известно, что количество звёзд не превышает 1000.

В файле Б хранятся данные о звёздах трёх кластеров, где H=3, W=3 для каждого кластера. Известно, что количество звёзд не превышает 10 000. Структура хранения информации о звездах в файле Б аналогична файлу А.

Для каждого файла определите координаты центра каждого кластера, затем вычислите два числа: Px – среднее арифметическое абсцисс центров кластеров, и Py – среднее арифметическое ординат центров кластеров. В ответе запишите четыре числа: в первой строке сначала целую часть произведения Px × 10 000 , затем целую часть произведения Py × 10 000 для файла А, во второй строке – аналогичные данные для файла Б. Возможные данные одного из файлов иллюстрированы графиком.

Внимание! График приведён в иллюстративных целях для произвольных значений, не имеющих отношения к заданию. Для выполнения задания используйте данные из прилагаемого файла.

Решение и ответ
В электронных таблицах по данным координатам построим точечные диаграммы, получим наглядное представление о кластерах.

 
По первой диаграмме видим два кластера:
1)(-2; 0) - (1;3)
2)(1; 3) - (5; 7)
 
Далее в текстовом файле уберем первую строку с заголовком и с помощью функции найти и заменить, изменим разделители запятые на точки.
 
def get_centr(box): #функция поиска центроиды – алгоритм полного перебора 
    m, x, y = 10 ** 20, 0, 0
    for i in range(len(box)):
        s = 0
        for j in range(len(box)):
            s += ((box[i][0] - box[j][0]) ** 2 + (box[i][1] - box[j][1]) ** 2) ** 0.5
        if s < m:
            m, x, y = s, box[i][0], box[i][1]
    return (x, y)
 
 
f = open('demo_2025_27_A.txt')
k1, k2 = [], [] # создаем пустые массивы для трех кластеров
for i in f:
    x, y = [float(e) for e in i.split()] # считываем координаты построчно 
    if -2 <= x <= 1 and 0 <= y <= 3:
        k1.append((x, y)) #заполняем массив первого кластера
    if 1 <= x <= 5 and 3 <= y <= 7:
        k2.append((x, y)) #заполняем массив второго кластера   
 
x1, y1 = get_centr(k1)
x2, y2 = get_centr(k2)
 
print(int((x1 + x2 ) / 2 * 10000), int((y1 + y2 ) / 2 * 10000))
 

По второй диаграмме видим три кластера:
1) (0; 0) - (3; 3)
2) (2; 7) - (5; 11)
3) (5; 4) - (8; 7)

Далее в текстовом файле уберем первую строку с заголовком и с помощью функции найти и заменить, изменим разделители запятые на точки.
 
def get_centr(box): #функция поиска центроиды – алгоритм полного перебора 
    m, x, y = 10 ** 20, 0, 0
    for i in range(len(box)):
        s = 0
        for j in range(len(box)):
            s += ((box[i][0] - box[j][0]) ** 2 + (box[i][1] - box[j][1]) ** 2) ** 0.5
        if s < m:
            m, x, y = s, box[i][0], box[i][1]
    return (x, y)
 
 
f = open('demo_2025_27_B.txt')
k1, k2, k3 = [], [], [] # создаем пустые массивы для трех кластеров
for i in f:
    x, y = [float(e) for e in i.split()] # считываем координаты построчно 
    if 0 <= x <= 3 and 0 <= y <= 3:
        k1.append((x, y)) #заполняем массив первого кластера
    if 2 <= x <= 5 and 7 <= y <= 11:
        k2.append((x, y)) #заполняем массив второго кластера
    if 5 <= x <= 8 and 4 <= y <= 7:
        k3.append((x, y)) #заполняем массив третьего кластера
 
x1, y1 = get_centr(k1)
x2, y2 = get_centr(k2)
x3, y3 = get_centr(k3)
print(int((x1 + x2 + x3) / 3 * 10000), int((y1 + y2 + y3) / 3 * 10000))
 
Ответ:
10738     30730
37522     51277
Добавить комментарий


РСЯ футер

© 2017 Компьютерный клуб "КОД". Все права защищены.

Please publish modules in offcanvas position.