Информатика | Илья Андрианов | itpy 🧑‍💻
1.02K subscribers
265 photos
20 videos
19 files
632 links
По рекламе: @ilandroxxy

Шпаргалки: clck.ru/3FwqWt
📚 Наши курсы: clck.ru/3FwqYb

Разборы: clck.ru/3Fwqay
💬 Чатик: clck.ru/3FwqZa

📺 YouTube: clck.ru/3FwqbX

🙋‍♂️ Я автор: @ilandroxxy
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
🚩 Разбор номера 4869 #kege по информатике #ЕГЭ5

Полный разбор задачи в Notion

Сложная задачка 5 номера с сайта kompege.ru, на примере этой задачи мы можем увидеть где нам могут пригодиться генераторы списков. А еще в конце разбора опубликовал более универсальный способ решения!

👩‍💻 Код решения:
for n in range(2, 10000):
s = bin(n)[2:]

chet1 = [x for x in s[1::2] if x == '1']
nechet0 = [x for x in s[0::2] if x == '0']

r = abs(len(chet1) - len(nechet0))
if r == 5:
print(n)
break


#⃣ Полный список разборов в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
105421
This media is not supported in your browser
VIEW IN TELEGRAM
🚩 Разбор номера 7309 #kege по информатике #ЕГЭ5
Автор: М. Шагитов
Уровень: Средний


🚩 Условие задачи:
Алгоритм принимает на вход натуральное число N и строит новое число R следующим образом:

1. Создается двоичная запись числа N.
2. Затем запись обрабатывается согласно следующим правилам:
а) Если N делится на 11, то к двоичной записи N справа добавляются все нули этой записи.
б) Если N не делится на 11, то к двоичной записи N слева добавляются все единицы этой записи.
3. Полученная запись представляет собой двоичную запись числа R.

Определите минимальное число N, после обработки которого алгоритмом получается число R, кратное 227.


👩‍💻 Код решения:
for n in range(1, 1000):
s = f'{n:b}'
if n % 11 == 0:
s += s.count('0') * '0'
else:
s = s.count('1') * '1' + s
r = int(s, 2)
if r % 227 == 0:
print(n)
break

Ответ: 59


👩‍💻 Комментарии к коду:

1⃣ for n in range(1, 1000):
Цикл for, в котором переменная n перебирает значения от 1 до 999 для рассмотрения чисел.


2⃣ s = f'{n:b}'
Преобразование числа n в двоичную строку и сохранение ее в переменной s.


3⃣ if n % 11 == 0:
Проверка, делится ли число n на 11 без остатка.


4⃣ s += s.count('0') * '0'
Если число n делится на 11, то в строку s добавляется количество нулей, равное количеству вхождений символа '0' в строку s.


5⃣ else:
В случае, если число n не делится на 11.


6⃣ s = s.count('1') * '1' + s
К строке s добавляется количество единиц, равное количеству вхождений символа '1' в строке s, сдвигая все символы вправо.


7⃣ r = int(s, 2)
Преобразование двоичной строки s в целое число в переменной r.


8⃣ if r % 227 == 0:
Проверка, делится ли число r на 227 без остатка.


0⃣ print(n)
Вывод числа n, которое удовлетворяет условиям задачи.

🔟 break
Прерывание цикла после вывода первого числа n, удовлетворяющего условиям, так как используется break.


#⃣ Полный список разборов в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
75422
This media is not supported in your browser
VIEW IN TELEGRAM
🚩 Разбор номера 12721 #kege по информатике #ЕГЭ5
Автор: C.Горбачёв
Уровень: Базовый


🚩 Условие задачи:
1. Строится восьмеричная запись числа N.

2. а) если количество чётных цифр в записи числа нечётно, то к трём последним разрядам восьмеричной записи справа дописывается 46;

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

Укажите минимальное число R, которое может быть получено с помощью описанного алгоритма при N не меньшем 80.


👩‍💻 Код решения:
R = []
for n in range(81, 10000):
s = oct(n)[2:] # f'{n:o}'
chet = [x for x in s if x in '02468']
if len(chet) % 2 != 0:
s = s[-3:] + '46'
else:
x = (n % 8) * 5
s = oct(x)[2:] + s
r = int(s, 8)
R.append(r)
print(min(R))

# Ответ: 38


👩‍💻 Комментарии к коду:

1⃣ R = []
Создание пустого списка R, в который будут добавляться результаты.


2⃣ for n in range(81, 10000):
Цикл, который перебирает числа от 81 до 9999.


3⃣ s = oct(n)[2:] # f'{n:o}'
Преобразование числа n в восьмеричную систему счисления и сохранение результата в строковой переменной s.


4⃣ chet = [x for x in s if x in '02468']
Формирование списка, содержащего только символы, которые являются четными цифрами.


5⃣ if len(chet) % 2 != 0:
Если количество четных цифр в строке нечетное.


6⃣ s = s[-3:] + '46'
Если условие из пункта 5 выполняется, изменяем строку s, добавляя к ней '46'.


7⃣ else:

8⃣ x = (n % 8) * 5
Вычисляем значение x как остаток от деления n на 8, умноженное на 5.


0⃣ s = oct(x)[2:] + s
Обновляем значение s, добавляя к нему начальную часть, преобразованную из x в восьмеричную систему.


1⃣0⃣ r = int(s, 8)
Преобразование строки s из восьмеричной системы счисления в целое число и сохранение результата в переменной r.


1⃣1⃣ R.append(r)
Добавление значения r в список R.


1⃣2⃣ print(min(R))
Вывод минимального значения из списка R.


#⃣ Полный список разборов в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
1354
This media is not supported in your browser
VIEW IN TELEGRAM
5⃣ Шпаргалка ЕГЭ | Задание #ЕГЭ5 #шпора

📌 Ссылка на полную версию шпаргалки/методички на Notion.

Поставь ❤️‍🔥, отправь другу, и забирай несколько полезных функций, которые уже ждут тебя здесь:

🚩 Встроенные функции перевода в 2, 8, 16-ю системы счисления:
n = 24
num_2 = bin(n)[2:] # 11000
num_8 = oct(n)[2:] # 30
num_16 = hex(n)[2:] # 18


🚩 Перевод в 2, 8, 16-ю системы счисления через f-строки:
n = 24
num_2 = f'{n:b}' # 11000
num_8 = f'{n:o}' # 30
num_16 = f'{n:x}' # 18


🚩 Универсальная функция перевода (2 <= base <=36)
from string import *
alphabet = digits + ascii_uppercase
# alphabet = sorted('0123456789QWERTYUIOPASDFGHJKLZXCVBNM')

def my_convert(num, base):
result = ''
while num > 0:
result += alphabet[num % base]
num //= base
return result[::-1]

n = 24
num_2 = my_convert(n, 2) # 11000
num_8 = my_convert(n, 8) # 30
num_16 = my_convert(n, 16) # 18
num_3 = my_convert(n, 3) # 220


🚩 Функция перевода из base системы в 10-ю (2 <= base <= 36)
r = int(num_base, base)
print(int('1000', 2)) # 8


🚩 Действия над строками:
s = '101001'

# Добавить '10' справа (в конец)
s = s + '10' # 10100110


# Добавить '01' слева (в начало)
s = '01' + s # 0110100110
print(s)

# Добавить '+' по середине
s = s[:len(s)//2] + '+' + s[len(s)//2:]
# 01101*00110

# Заменить все нули на единицы, а единицы на нули
s = s.replace('1', '*')
s = s.replace('0', '1')
s = s.replace('*', '0')


Информатика ЕГЭ | itpy 🧑‍💻
Поддержать автора: boosty 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
12653
🚩 Разбор номера 11818 #kege по информатике #ЕГЭ5
Автор: Л.Шастин
Уровень: Средний


🚩 Условие задачи:
1. Строится запись числа N в системе счисления с основанием 12.
2. Далее эта запись обрабатывается по следующему правилу:

а) если число N делится на 4, то слева к нему приписывается «2», а справа «64»;

б) если число N на 4 не делится, то в конец числа дописывается его максимальная цифра в системе счисления с основанием 12.
Полученная таким образом запись является двенадцатеричной записью искомого числа R.

3. Результат переводится в десятичную систему и выводится на экран.


🚩 Теоретическая справка:
Аудио с пояснением к коду решения оставлю в комментариях.


👩‍💻 Код решения:
alphabet = sorted('0123456789QWERTYUIOPASDFGHJKLZXCVBNM')
def convert(num, base):
r = ''
while num > 0:
r += alphabet[num % base]
num //= base
return r[::-1]


R = []
for n in range(1, 10000):
s = convert(n, 12)
if n % 4 == 0:
s = '2' + s + '64'
else:
s += max([x for x in s])
r = int(s, 12)
if r > 1799:
R.append(r)
print(min(R))

# Ответ: 1806


👩‍💻 Комментарии к коду:

1⃣ alphabet = sorted('0123456789QWERTYUIOPASDFGHJKLZXCVBNM')
Создание отсортированного списка символов, представляющих алфавит для кодирования чисел в других системах.


2⃣ def convert(num, base):
Определение функции convert с аргументами num (число для конвертации) и base (основание системы счисления).


3⃣ r = ''
Инициализация пустой строки r, которая будет содержать конвертированное число.


4⃣ while num > 0:
Начало цикла, который будет выполняться, пока число num больше нуля.


5⃣ r += alphabet[num % base]
Добавление символа из алфавита в строку r, соответствующего остатку от деления числа num на base.


6⃣ num //= base
Целочисленное деление числа num на base.


7⃣ return r[::-1]
Возврат результата функции, перевернутого конвертированного числа.


8⃣ R = []
Создание пустого списка R для хранения результата.


0⃣ for n in range(1, 10000):
Цикл, перебирающий числа от 1 до 9999.


1⃣0⃣ s = convert(n, 12)
Конвертация числа n в двенадцатеричную систему и сохранение результата в строке s.


1⃣1⃣ if n % 4 == 0:
Проверка условия: если число n делится на 4 без остатка.


1⃣2⃣ s = '2' + s + '64'
Если условие из пункта 11 выполняется, изменяем строку s, добавляя к ней '2' в начале и '64' в конце.


1⃣3⃣ else:

1⃣4⃣ s += max([x for x in s])
Добавляем к строке s максимальное значение из всех символов.


1⃣5⃣ r = int(s, 12)
Преобразование числа s из двенадцатеричной системы в десятичную и сохранение результата в переменной r.


1⃣6⃣ if r > 1799:
Проверка условия: если результат r больше 1799.


1⃣7⃣ R.append(r)
Добавление числа r в список R.


1⃣8⃣ print(min(R))
Вывод минимального значения из списка R после завершения цикла.


#⃣ Полный список разборов в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Поддержать автора: boosty 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
1076
This media is not supported in your browser
VIEW IN TELEGRAM
🚩 Разбор номера 13874 #kege по информатике #ЕГЭ5
Автор: Л. Шастин
Уровень: Базовый


🚩 Условие задачи:
а) если число N делится на 3, то первая и последняя цифры меняются местами, а затем в конец дописывается единица;
б) если число N на 3 не делится, то остаток от деления на 3 дописывается в конец числа.


🚩 Теоретическая справка:
Аудио с пояснением к коду решения оставлю в комментариях.


👩‍💻 Код решения:
alphabet = sorted('0123456789QWERTYUIOPASDFGHJKLZXCVBNM')
def convert(num, base):
res = ''
while num > 0:
res = alphabet[num % base] + res
num //= base
return res


R = []
for n in range(1, 1000, 2):
s = convert(n, 4)
if n % 3 == 0:
s = s[-1] + s[1:-1] + s[0] + '1'
else:
s += str(n % 3)
r = int(s, 4)
if r <= 340:
R.append(r)
print(max(R))

# Ответ 334


👩‍💻 Комментарии к коду:

1⃣ def convert(num, base):
Функцию convert() комментировать не буду, опишу её постом ниже.


2⃣ R = []
Инициализация пустого списка R, который будет использоваться для хранения результатов.


3⃣ for n in range(1, 1000, 2):
Цикл for, который проходит по нечетным числам от 1 до 999 включительно.


4⃣ s = convert(n, 4)
Преобразование числа n в строку с использованием четверичной системы счисления.


5⃣ if n % 3 == 0:
Проверка, является ли число n кратным 3.


6⃣ s = s[-1] + s[1:-1] + s[0] + '1'
Если число n кратно 3, изменяем строку s, меняя местами первый и последний символ, добавляем '1' в конец.


7⃣ else:
В противном случае (число n не кратно 3) выполняем следующий блок кода.


8⃣ s += str(n % 3)
Если число n не кратно 3, добавляем остаток от деления числа n на 3 в виде строки в конец строки s.


0⃣ r = int(s, 4)
Преобразование строки s обратно в число в четверичной системе счисления.


1⃣0⃣ if r <= 340:
Проверка, меньше ли полученное число r или равно 340.


1⃣1⃣ R.append(r)
Добавление числа r в список R.


1⃣2⃣ print(max(R))
Вывод максимального числа из списка R.


#⃣ Полный список разборов в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Поддержать автора: boosty 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
1043
🚩 Разбор ДВ #2024 номера #5 по информатике #ЕГЭ5

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

Укажите максимальное число N, после обработки которого с помощью этого алгоритма получается число R, меньшее 20.



👩‍💻 Код решения:
R = []
for n in range(2000):
s = bin(n)[2:]
if s.count('1') % 2 == 0:
s = '10' + s[2:] + '0'
else:
s = '11' + s[2:] + '1'
r = int(s, 2)
if r < 20:
R.append(n)
print(max(R))

# Ответ: 12


👩‍💻 Комментарии к коду:

1. R = []
Создание пустого списка `R`, в который будут добавляться значения.


2. for n in range(2000):
Цикл `for`, который проходит по значениям от 0 до 1999.


3. s = bin(n)[2:]
Преобразование числа `n` в двоичное представление и сохранение его в переменной `s`, исключая первые два символа, которые обозначают приставку "0b".


4. if s.count('1') % 2 == 0:
Проверка условия: если количество единиц в строке `s` делится на 2 без остатка.


5. s = '10' + s[2:] + '0'
Изменение строки `s`, добавляя приставку "10" в начало и "0" в конец исходной строки `s`, начиная с третьего символа.


6. else:
Выполняется, если условие в пункте 4 не выполнено.


7. s = '11' + s[2:] + '1'
Изменение строки `s`, добавляя приставку "11" в начало и "1" в конец исходной строки `s`, начиная с третьего символа.


8. r = int(s, 2)
Преобразование строки `s` из двоичного представления в целое число и сохранение результата в переменной `r`.


9. if r < 20:
Проверка условия: если значение `r` меньше 20.


10. R.append(n)
Добавление значения `n` в список `R`.

11. print(max(R))
Вывод на экран максимального значения из списка `R`.


Информатика ЕГЭ | itpy 🧑‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
6321
🚩 Разбор ДВ #2024 номера #5 по информатике #ЕГЭ5

👩‍💻 Код решения:
R = []
for n in range(1, 1000):
s = f'{n:b}' # s = bin(n)[2:]
if n % 2 == 0:
s = s + '10'
else:
s = '1' + s + '01'
r = int(s, 2)
if n < 11:
R.append(r)
print(min(R))


Информатика ЕГЭ | itpy 🧑‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
875
This media is not supported in your browser
VIEW IN TELEGRAM
🚩 Разбор номера 917 #kege по информатике #ЕГЭ5
Автор: Е. Джобс
Уровень: Средний


🚩 Условие задачи:
Автомат обрабатывает натуральное число N > 1 по следующему алгоритму:

1. Строится двоичная запись числа N.
2. В записи последний ноль заменяется на первые две цифры в полученной записи.
3. Запись записывается справа налево (в обратную сторону).
4. Полученное двоичное число переводится в десятичную систему счисления.

Для какого максимального значения в результате работы алгоритма получится число 119?


🚩 Теоретическая справка:
Про возможность обрабатывать исключения try я писал в этом посте.


👩‍💻 Код решения:
R = []
for n in range(2, 1000):
s = f'{n:b}'
try:
m = s.rindex('0')
s = s[:m] + s[:2] + s[m+1:]
s = s[::-1]
r = int(s, 2)
if r == 119:
R.append(n)
except Exception as E:
print(s, E)
print(max(R))

# Ответ: 58



👩‍💻 Комментарии к коду:

1⃣ R = []
Создаем пустой список R для хранения чисел, которые будут соответствовать заданным условиям.


2⃣ for n in range(2, 1000):
Запускаем цикл, перебирающий числа от 2 до 999 включительно.


3⃣ s = f'{n:b}'
Преобразуем текущее число n в строку, содержащую его двоичное представление.


4⃣ try:
Начинаем блок try для обработки возможных исключений в последующем коде.


5⃣ m = s.rindex('0')
Находим индекс последнего вхождения символа '0' в строке s.


6⃣ s = s[:m] + s[:2] + s[m+1:]
Формируем новую строку: оставляем часть до последнего '0', вставляем первые два символа исходной строки и добавляем оставшуюся часть исходной строки после последнего '0'.


7⃣ s = s[::-1]
Переворачиваем строку s задом наперед.


8⃣ r = int(s, 2)
Преобразуем строку s обратно в целое число из двоичной системы счисления.


0⃣ if r == 119:
Проверяем, равно ли получившееся число 119.


1⃣0⃣ R.append(n)
Если условие верно, добавляем исходное число n в список R.


1⃣1⃣ except Exception as E:
Обрабатываем возможные исключения, которые могут возникнуть в блоке try.


1⃣2⃣ print(s, E)
В случае исключения выводим текущую строку s и описание ошибки E.


1⃣3⃣ print(max(R))
Выводим максимальное число из списка R.


#⃣ Полный список разборов в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Поддержать автора донатом 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
555
This media is not supported in your browser
VIEW IN TELEGRAM
🚩 Разбор номера 688 #kege по информатике #ЕГЭ5
Автор: Е.Джобс
Уровень: Средний


🚩 Условие задачи:
Автомат обрабатывает натуральное число N (0≤N≤255) по следующему алгоритму:
1) Строится восьми битная двоичная запись числа N.
2) Удаляются средние 4 цифры.
3) Полученное число переводится в десятичную запись и выводится на экран.

Какое наибольшее число, меньшее 110, после обработки автоматом даёт результат 7?


👩‍💻 Код решения:
R = []
for n in range(0, 255+1):
s = f'{n:b}'.zfill(8)
s = s[:2] + s[-2:]
r = int(s, 2)
if n < 110 and r == 7:
R.append(n)
print(max(R))

# Ответ: 107


👩‍💻 Комментарии к коду:

1️⃣ R = []
Создаем пустой список для хранения подходящих чисел


2️⃣ for n in range(0, 255+1):
Начинаем цикл, перебираем числа от 0 до 255 включительно


3️⃣ s = f'{n:b}'.zfill(8)
Переводим текущее число n в двоичную строку, дополняя нулями до 8 бит (в формате строки)


4️⃣ s = s[:2] + s[-2:]
Оставляем только первые две и последние две цифры двоичного представления


5️⃣ r = int(s, 2)
Преобразуем полученную строку обратно в целое число в десятичной системе счисления


6️⃣ if n < 110 and r == 7:
Проверяем, если число меньше 110 и преобразованное число равно 7


7️⃣ R.append(n)
Добавляем число в список R, если оно соответствует условиям


8️⃣ print(max(R))
Выводим наибольшее число из списка R


#⃣ Полный список разборов в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Поддержать автора донатом 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
643
This media is not supported in your browser
VIEW IN TELEGRAM
🚩 Разбор номера 17859 #kege по информатике #ЕГЭ5
Автор: Демоверсия 2025
Уровень: Базовый


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

Укажите максимальное число R, которое может быть результатом работы данного алгоритма, при условии, что N не больше 12.


🚩 Теоретическая справка:
Самый базовый номер из всех, которые можно придумать под пятую задачу. Нечего останавливаться, лучше потренируйте перевод в n-ю систему счисления.


👩‍💻 Код решения:
R = []
for n in range(1, 12+1):
s = f'{n:b}'
if n % 2 == 0:
s = '10' + s
else:
s = '1' + s + '01'
r = int(s, 2)
R.append(r)
print(max(R))

# Ответ: 109


👩‍💻 Комментарии к коду:

1⃣ R = []
Создаем пустой список R для хранения результирующих чисел.


2⃣ for n in range(1, 12+1):
Итерируем по числам n от 1 до 12 включительно.


3⃣ s = f'{n:b}'
Преобразуем текущее значение n в двоичную строку s.


4⃣ if n % 2 == 0:
Проверяем, является ли текущее число n четным.


5⃣ s = '10' + s
Если n четное, добавляем '10' в начало строки s.


6⃣ else:
В противном случае, если n нечетное.


7⃣ s = '1' + s + '01'
Добавляем '1' в начало и '01' в конец строки s.


8⃣ r = int(s, 2)
Преобразуем измененную строку s из двоичной системы в десятичное число и сохраняем его в r.


0⃣ R.append(r)
Добавляем полученное десятичное число r в список R.


🔟 print(max(R))
Печатаем максимальное значение из списка R.


#⃣ Полный список разборов в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Поддержать автора донатом 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
632
This media is not supported in your browser
VIEW IN TELEGRAM
🚩 Разбор номера #yandex по информатике #ЕГЭ5
Автор: Кабанов А
Уровень: Средний


🚩 Условие задачи:
Автомат обрабатывает натуральное число N (1≤N≤255) по следующему алгоритму:

1. Строится восьмибитная двоичная запись числа N.
2. Удаляются средние четыре цифры.
3. Полученное число переводится в десятичную запись и выводится на экран.

Каково наименьшее число, большее 130, которое после обработки автоматом даёт результат 10?


🚩 Теоретическая справка:
Интересная задачка из-за своего "прикольного" среза, ну и метод .zfill(8) не оставит равнодушными!)


👩‍💻 Код решения:
for n in range(130+1, 255+1):
s = f'{n:b}'.zfill(8)
s = s[:2] + s[-2:]
r = int(s, 2)
if r == 10:
print(n)
break

# Ответ: 134


👩‍💻 Комментарии к коду:

1⃣ for n in range(130+1, 255+1):
- Начинаем цикл с числами от 131 до 255 (включительно).


2⃣ s = f'{n:b}'.zfill(8)
- Преобразуем число n в двоичную строку и дополняем её нулями слева до 8 символов.


3⃣ s = s[:2] + s[-2:]
- Извлекаем первые две и последние две цифры двоичной строки и объединяем их.


4⃣ r = int(s, 2)
- Преобразуем получившуюся строку обратно в десятичное число.


5⃣ if r == 10:
- Проверяем, равен ли результат 10.


6⃣ print(n)
- Если условие выполнено, выводим значение n.


7⃣ break
- Завершаем выполнение цикла после нахождения первого подходящего числа.


#⃣ Полный список разборов в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Поддержать автора донатом 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥541
🚩 Разбор номера 19888 #kege по информатике #ЕГЭ5
Автор: Л.Шастин
Уровень: Средний

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

Например, для исходного числа 9 = 118 результатом является число 338 = 27, а для исходного числа 12 = 148 это число 248 = 20.
Укажите максимальное число R, меньшее 300, которое может быть получено с помощью описанного алгоритма. В ответе запишите это число в десятичной системе счисления.


🚩 Теоретическая справка:
Аудио с пояснением к коду решения оставлю в комментариях.


👩‍💻 Код решения:
R = []
for n in range(1, 1000):
s = f'{n:o}'
if n % 2 == 0:
for x in '1357':
s = s.replace(x, '2')
else:
s = '3' + s[1:-1] + '3'
r = int(s, 8)
if r < 300:
R.append(r)
print(max(R))

Ответ: 294:


👩‍💻 Комментарии к коду:

1⃣ R = []
Создается пустой список R для хранения подходящих результатов.


2⃣ for n in range(1, 1000):
Цикл перебирает числа от 1 до 999 включительно.


3⃣ s = f'{n:o}'
Число n преобразуется в восьмеричную (octal) систему счисления и сохраняется в строку s.


4⃣ if n % 2 == 0:
Проверяется, четное ли число n.


5⃣ for x in '1357':
Если число четное, то перебираются нечетные цифры 1, 3, 5, 7.


6⃣ s = s.replace(x, '2')
Каждую нечетную цифру в строке s заменяют на 2.


7⃣ else:
Если число n нечетное, выполняется этот блок.


8⃣ s = '3' + s[1:-1] + '3'
Для нечетных чисел:
- Первый символ строки s заменяется на '3'.
- Последний символ заменяется на '3'.
- Середина строки (s[1:-1]) остается без изменений.
Пример: s = '1234' → '323' (первая и последняя цифры заменены на 3).


0⃣ r = int(s, 8)
Строка s (в восьмеричной системе) преобразуется обратно в десятичное число.


🔟 if r < 300:
Если полученное число r меньше 300, оно добавляется в список R.


1⃣1⃣ print(max(R))
В конце выводится максимальное число из списка R.


#⃣ Полный список разборов в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥4👍3🔥3
5⃣ Шпаргалка для номера #ЕГЭ5 #шпора

Собрал для вас основные моменты, которые важно знать при решении 5 номера. Для закрепления материала оставляю ссылку на подборку всех 5 номеров разобранных на моем канале.

📚 По этой ссылке ты найдешь мои шпаргалки по всем остальным номерам ЕГЭ


🚩 Разбор номера 21404 #kege по информатике #ЕГЭ5
Автор: Досрочная волна 2025
Уровень: Базовый

for n in range(1, 1000):
s = f'{n:b}'
if s.count('1') % 2 == 0:
s = '10' + s[2:] + '0'
else:
s = '11' + s[2:] + '1'
r = int(s, 2)
if r > 480:
print(n)
break



🚩 Разбор номера 21700 #kege по информатике #ЕГЭ5
Автор: ЕГКР 19.04.25
Уровень: Базовый

def tri(n):
s = ''
while n > 0:
s += str(n % 3)
n //= 3
s = s[::-1]
return s

for n in range(1000, 1, -1):
s = tri(n)
if n % 3 == 0:
s += s[-2:]
else:
s += tri(n % 3 * 3)
r = int(s, 3)
if r <= 150:
print(n)
break

В этом типе нужно использовать функцию для перевода в троичную систему счисления.


🚩 Встроенные функции перевода в 2, 8, 16-ю системы счисления:
n = 24
num_2 = bin(n)[2:] # 11000
num_8 = oct(n)[2:] # 30
num_16 = hex(n)[2:] # 18


🚩 Перевод в 2, 8, 16-ю системы счисления через f-строки:
n = 24
num_2 = f'{n:b}' # 11000
num_8 = f'{n:o}' # 30
num_16 = f'{n:x}' # 18


🚩 Универсальная функция перевода (2 <= base <=36)
from string import *
alphabet = digits + ascii_uppercase
# alphabet = sorted('0123456789QWERTYUIOPASDFGHJKLZXCVBNM')

def my_convert(num, base):
result = ''
while num > 0:
result += alphabet[num % base]
num //= base
return result[::-1]

n = 24
num_2 = my_convert(n, 2) # 11000
num_8 = my_convert(n, 8) # 30
num_16 = my_convert(n, 16) # 18
num_3 = my_convert(n, 3) # 220


🚩 Функция перевода из base системы в 10-ю
print(int('1000', 2))  # 8
print(int('10', 8)) # 8
print(int('8', 16)) # 8

Диапазон работы функции (2 <= base <= 36)


🚩 Действия над строками:
s = '101001'

# Добавить '10' справа (в конец)
s = s + '10' # 10100110


# Добавить '01' слева (в начало)
s = '01' + s # 0110100110
print(s)

# Добавить '+' по середине
s = s[:len(s)//2] + '+' + s[len(s)//2:]
# 01101*00110

# Заменить все нули на единицы, а единицы на нули
s = s.replace('1', '*')
s = s.replace('0', '1')
s = s.replace('*', '0')


📌 Тут оставлю сылку на старую версию шпаргалки, которую делал в Notion


Давайте наберем 30 реакций, после этого заливаю следующую (свежую) шпору 👋

#⃣ Вся теория для ЕГЭ в одном месте
#⃣ Полный список разборов в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
5168👍74
🚩 Разбор #ДВ2025 номера #ЕГЭ5 по информатике

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

Укажите наименьшее число N, после обработки которого с помощью этого алгоритма получается число R, не меньшее чем 290.


👩‍💻 Код решения:
def tri(n):
s = ''
while n > 0:
s += str(n % 3)
n //= 3
return s[::-1]

for n in range(1, 1000):
s = tri(n)
if n % 3 == 0:
s += s[-2:]
else:
s += tri(n % 3 * 5)
r = int(s, 3)
if r >= 290:
print(n)
break

# Ответ: 11



#⃣ Разбор задач ДВ, первый день 10.06.25
#⃣ Шпаргалки по всем остальным номерам ЕГЭ

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤‍🔥543