Калужский Александр: Исправил!
05-09-2024
Читать статью
.: "Если число в двоичной форме имеет меньш..
Калужский Александр: Можно и так
02-09-2024
Продолжаем решать демовариант ЕГЭ по информатике 2025.
Более подробно, как решать те или иные задачи, можете читать в НОВОМ курсе ЕГЭ по информатике 2025.
В этой части посмотрим задания с 8-ого по 14-ое.
Определите количество 12-ричных пятизначных чисел, в записи которых ровно одна цифра 7 и не более трёх цифр с числовым значением, превышающим 8.
k=0 for x1 in '123456789AB': for x2 in '0123456789AB': for x3 in '0123456789AB': for x4 in '0123456789AB': for x5 in '0123456789AB': s = x1+x2+x3+x4+x5 if s.count('7')==1 and s.count('9') + s.count('A') + s.count('B') <= 3: k += 1 print(k)
Применяем методы, о которых говорили в статье по 8 Заданию курса ЕГЭ по информатике 2025.
Откройте файл электронной таблицы, содержащей в каждой строке шесть натуральных чисел. Определите количество строк таблицы, содержащих числа, для которых выполнены оба условия:
– в строке только одно число повторяется трижды, остальные числа различны;
– квадрат суммы всех повторяющихся чисел строки больше квадрата суммы всех её неповторяющихся чисел.
В ответе запишите только число.
В ячейке G1 пропишем формулу:
Получим число 3. Первый параметр показывает, где мы хотим подсчитать что-либо. Второй параметр - это что хотим подсчитать. Мы подсчитали, сколько раз встречается число A1 в первой строчке.
Возле букв мы поставили знак доллара $. Это мы сделали для того, чтобы при распространении данной формулы вправо, диапазон не смещался вправо за формулой. Формула всегда будет обсчитывать ячейки A1:F1.
Распространим формулы вправо на 6 ячеек. Тогда в ячейке H1 получим сколько раз встречается число B1 и т.д.
Распространим формулу для всех строчек.
Подкрасим область нашего решения жёлтым цветом (для этого можно использовать лейку). Чтобы проверить первое условие для строки, нужно подсчитать количество троек и единиц в "жёлтом диапазоне". Воспользуемся снова формулой СЧЁТЕСЛИ(). Пропишем в ячейке M1.
Здесь мы считаем в диапазоне G1:L1 количество троек. Для первой строки получается три тройки.
Так же подсчитаем количество единиц в ячейке N1:
Распространим эти формулы так же для всех строчек.
Пропишем формулу для первого вопроса в ячейке O1 и распространим её для всех строчек:
Если одно число в строке будет повторяться 3 раза, то в ячейке M1 будет находится 3. Чтобы остальные числа были различны, в ячейке N1 должно быть число 3 (6 - 3 = 3 единицы).
Если строчка подходит под первое условие, то в столбце O напротив этой строчки будет 1, иначе 0.
Разберёмся со вторым вопросом.
Найдём сумму повторяющихся чисел. В ячейке P1 формулу:
Первый параметр - это диапазон откуда берём числа для суммирования, второй параметр - диапазон, где указано, нужно ли суммировать то или иное число (критерий суммирования). Третий параметр - это то число, которое сигнализирует, что число подлежит суммированию. Это число программа ищет в диапазоне критерия. Таким образом, мы найдём сумму чисел, которые повторяются три раза. Для первой строчки число получается 15.
Чтобы получить квадрат суммы, подкорректируем формулу:
Распространим эту формулу на весь столбец.
В следующем столбце аналогично найдём квадрат суммы неповторяющихся чисел:
В столбце R ответим на второй вопрос. В ячейке R1 пропишем:
Ответим на вопрос всей задачи. В S1 пропишем:
Распространим формулу на весь столбец.
Выделим столбец S и посмотрим сумму в правом нижнем углу.
Это и будет ответ.
C помощью текстового редактора определите, сколько раз встречается сочетание букв «по» или «По» в составе других слов, включая сложные слова, соединённые дефисом, но не как отдельное слово в тексте глав XII и XIV третьей части тома 2 романа Л.Н. Толстого «Война и мир». В ответе укажите только число.
В начале скопируем главы XII и XIV третьей части в новой документ Word.
На вкладке "Главная" находится кнопка "Найти". Кликаем по чёрному треугольнику возле этой кнопки и выбираем "Расширенный поиск".
Далее, нажимаем кнопку "Больше>>".
Найдём сколько раз встречается сочетание букв "По" или "по" в этом тексте.
В поле "Найти" напишем слово "по". Мы не будем ставить галочку "учитывать регистр", чтобы программа искала, как с маленькой буквы, так и с большой.
Нажмём Область поиска -> Основной документ.
Получается всего 112 сочетаний.
Теперь поставим галочку "Только слово целиком". Опять нажмём Область поиска -> Основной документ.
Но здесь программа считает, например, такие слова, как "по-дружески" в виде отдельных слов, хотя в нашей задачке сочетание "по" в этом слове является в составе другого слова.
Пропишем в строку поиска: "по-" и нажмём Область поиска -> Основной документ.
Найдём сколько раз это сочетание встречается в составе других слов. От общего количества отнимем сколько раз это сочетание встречается в виде отдельных слов.
На предприятии каждой изготовленной детали присваивают серийный номер, содержащий десятичные цифры, 52 латинские буквы (с учётом регистра) и символы из 963-символьного специального алфавита. В базе данных для хранения каждого серийного номера отведено одинаковое и минимально возможное число байт. При этом используется посимвольное кодирование серийных номеров, все символы кодируются одинаковым и минимально возможным числом бит. Известно, что для хранения 2000 серийных номеров отведено не более 693 Кбайт памяти. Определите максимально возможную длину серийного номера. В ответе запишите только целое число.
В этой задаче нам неизвестна длина серийного номера. Обозначим её за x. Найдём сколько весит один символ серийного номера.
Получается, что 11 бит весит 1 символ серийного номера. Тогда 11*x бит - будет весить весь серийный номер.
Латинские буквы можно использовать с учётом регистра, это значит, допускаются как большие буквы, так и маленькие.
Найдём, сколько памяти отведено на 1 серийный номер:
Мы здесь округлили в меньшую сторону. Если бы мы округлили в большую сторону, то в итоге бы превысили 693 Кбайт памяти. А в задаче сказано, что выделено не более 693 Кбайт. В виде дробного числа тоже нельзя оставлять, т.к. сказано, что для номера отведено целое число байт.
Переведём 11*x в байты и получим уравнение:
Здесь мы опять округлили в меньшую сторону, т.к. если длина номера будет больше, чем положено, для номера опять придётся выделять больше памяти, чем 354 байт, и в итоге мы превысим 693 Кбайт для всех номеров.
Проверка!
В подобных задачах лучше всего делать проверку. Предположим, что x мы округлили в большую сторону.
Здесь мы должны округлить в большую сторону, т.к. не может отбросить часть информации у номера детали.
355 байт превышает допустимое значение > 354 байт.
Проверим наше число x = 257.
Здесь всё в порядке и это наибольшее число.
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах 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 = '1'*81 while '11111' in s or '888' in s: if '11111' in s: s=s.replace('11111', '88', 1) else: s=s.replace('888', '8', 1) print(s)
Здесь мы формируем первоначальную строку и прогоняем в указанном алгоритме. В итоге получается 881.
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Сеть задана IP-адресом 172.16.168.0 и маской сети 255.255.248.0. Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса не кратно 5?
В ответе укажите только число.
Воспользуемся решениями, о которых говорили в статье по 13 Заданию из курса ЕГЭ по информатике 2025.
from ipaddress import * k=0 net = ip_network('172.16.168.0/255.255.248.0', 0) for ip in net: if format(ip, 'b').count('1')%5!=0: k += 1 print(k)
О 14 Задании мы подробно говорили в статье из курса ЕГЭ по информатике 2025.
Операнды арифметического выражения записаны в системе счисления с основанием 19.
В записи чисел переменной x обозначена неизвестная цифра из алфавита 19-ричной системы счисления. Определите наибольшее значение x, при котором значение данного арифметического выражения кратно 18. Для найденного x вычислите частное от деления значения арифметического выражения на 18 и укажите его в ответе в десятичной системе счисления. Основание системы счисления указывать не нужно.
for x in range(0, 19): a=1*19**0+2*19**1+x*19**2+7*19**3+9*19**4+8*19**5+8*19**6+9*19**7 b=3*19**0+2*19**1+9*19**2+x*19**3+2*19**4 if (a+b)%18==0: print(x, (a+b)//18)
Значение арифметического выражения
записали в системе счисления с основанием 25. Сколько значащих нулей содержится в этой записи?
f = 3*3125**8 + 2*625**7 - 4*625**6 + 3*125**5 - 2*25**4 - 2025 k=0 while f>0: if f%25 == 0: k += 1 f = f // 25 print(k)
Значение арифметического выражения 7170 + 7100 – x, где x – целое положительное число, не превышающее 2030, записали в 7-ричной системе счисления. Определите наибольшее значение x, при котором в 7-ричной записи числа, являющегося значением данного арифметического выражения, содержится ровно 71 нуль.
В ответе запишите число в десятичной системе счисления.
for x in range(1, 2031): f = 7**170 + 7**100 - x #Счётчик нулей в семеричной системе k=0 #Перебираем цифры в семеричной системе while f>0: if f%7==0: k += 1 f = f // 7 if k==71: print(x)