This media is not supported in your browser
VIEW IN TELEGRAM
Сложная задачка 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
Please open Telegram to view this post
VIEW IN TELEGRAM
#kege #yandex
#reshu #statgrad
#polyakov
#ЕГЭ1 #ЕГЭ10 #ЕГЭ19
#ЕГЭ2 #ЕГЭ11 #ЕГЭ20
#ЕГЭ3 #ЕГЭ12 #ЕГЭ21
#ЕГЭ4 #ЕГЭ13 #ЕГЭ22
#ЕГЭ5 #ЕГЭ14 #ЕГЭ23
#ЕГЭ6 #ЕГЭ15 #ЕГЭ24
#ЕГЭ7 #ЕГЭ16 #ЕГЭ25
#ЕГЭ8 #ЕГЭ17 #ЕГЭ26
#ЕГЭ9 #ЕГЭ18 #ЕГЭ27
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: М. Шагитов
Уровень: Средний
Алгоритм принимает на вход натуральное число 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
for n in range(1, 1000):
Цикл for, в котором переменная n перебирает значения от 1 до 999 для рассмотрения чисел.
s = f'{n:b}'
Преобразование числа n в двоичную строку и сохранение ее в переменной s.
if n % 11 == 0:
Проверка, делится ли число n на 11 без остатка.
s += s.count('0') * '0'
Если число n делится на 11, то в строку s добавляется количество нулей, равное количеству вхождений символа '0' в строку s.
else:
В случае, если число n не делится на 11.
s = s.count('1') * '1' + s
К строке s добавляется количество единиц, равное количеству вхождений символа '1' в строке s, сдвигая все символы вправо.
r = int(s, 2)
Преобразование двоичной строки s в целое число в переменной r.
if r % 227 == 0:
Проверка, делится ли число r на 227 без остатка.
print(n)
Вывод числа n, которое удовлетворяет условиям задачи.
break
Прерывание цикла после вывода первого числа n, удовлетворяющего условиям, так как используется break.
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: 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
R = []
Создание пустого списка R, в который будут добавляться результаты.
for n in range(81, 10000):
Цикл, который перебирает числа от 81 до 9999.
s = oct(n)[2:] # f'{n:o}'
Преобразование числа n в восьмеричную систему счисления и сохранение результата в строковой переменной s.
chet = [x for x in s if x in '02468']
Формирование списка, содержащего только символы, которые являются четными цифрами.
if len(chet) % 2 != 0:
Если количество четных цифр в строке нечетное.
s = s[-3:] + '46'
Если условие из пункта 5 выполняется, изменяем строку s, добавляя к ней '46'.
else:
x = (n % 8) * 5
Вычисляем значение x как остаток от деления n на 8, умноженное на 5.
s = oct(x)[2:] + s
Обновляем значение s, добавляя к нему начальную часть, преобразованную из x в восьмеричную систему.
r = int(s, 8)
Преобразование строки s из восьмеричной системы счисления в целое число и сохранение результата в переменной r.
R.append(r)
Добавление значения r в список R.
print(min(R))
Вывод минимального значения из списка R.
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Поставь
n = 24
num_2 = bin(n)[2:] # 11000
num_8 = oct(n)[2:] # 30
num_16 = hex(n)[2:] # 18
n = 24
num_2 = f'{n:b}' # 11000
num_8 = f'{n:o}' # 30
num_16 = f'{n:x}' # 18
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
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
Автор: Л.Шастин
Уровень: Средний
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
alphabet = sorted('0123456789QWERTYUIOPASDFGHJKLZXCVBNM')
Создание отсортированного списка символов, представляющих алфавит для кодирования чисел в других системах.
def convert(num, base):
Определение функции convert с аргументами num (число для конвертации) и base (основание системы счисления).
r = ''
Инициализация пустой строки r, которая будет содержать конвертированное число.
while num > 0:
Начало цикла, который будет выполняться, пока число num больше нуля.
r += alphabet[num % base]
Добавление символа из алфавита в строку r, соответствующего остатку от деления числа num на base.
num //= base
Целочисленное деление числа num на base.
return r[::-1]
Возврат результата функции, перевернутого конвертированного числа.
R = []
Создание пустого списка R для хранения результата.
for n in range(1, 10000):
Цикл, перебирающий числа от 1 до 9999.
s = convert(n, 12)
Конвертация числа n в двенадцатеричную систему и сохранение результата в строке s.
if n % 4 == 0:
Проверка условия: если число n делится на 4 без остатка.
s = '2' + s + '64'
Если условие из пункта 11 выполняется, изменяем строку s, добавляя к ней '2' в начале и '64' в конце.
else:
s += max([x for x in s])
Добавляем к строке s максимальное значение из всех символов.
r = int(s, 12)
Преобразование числа s из двенадцатеричной системы в десятичную и сохранение результата в переменной r.
if r > 1799:
Проверка условия: если результат r больше 1799.
R.append(r)
Добавление числа r в список R.
print(min(R))
Вывод минимального значения из списка R после завершения цикла.
Поддержать автора: boosty
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Л. Шастин
Уровень: Базовый
а) если число 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
def convert(num, base):
Функцию convert() комментировать не буду, опишу её постом ниже.
R = []
Инициализация пустого списка R, который будет использоваться для хранения результатов.
for n in range(1, 1000, 2):
Цикл for, который проходит по нечетным числам от 1 до 999 включительно.
s = convert(n, 4)
Преобразование числа n в строку с использованием четверичной системы счисления.
if n % 3 == 0:
Проверка, является ли число n кратным 3.
s = s[-1] + s[1:-1] + s[0] + '1'
Если число n кратно 3, изменяем строку s, меняя местами первый и последний символ, добавляем '1' в конец.
else:
В противном случае (число n не кратно 3) выполняем следующий блок кода.
s += str(n % 3)
Если число n не кратно 3, добавляем остаток от деления числа n на 3 в виде строки в конец строки s.
r = int(s, 4)
Преобразование строки s обратно в число в четверичной системе счисления.
if r <= 340:
Проверка, меньше ли полученное число r или равно 340.
R.append(r)
Добавление числа r в список R.
print(max(R))
Вывод максимального числа из списка R.
Поддержать автора: boosty
Please open Telegram to view this post
VIEW IN TELEGRAM
На вход алгоритма подаётся натуральное число 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
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
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Е. Джобс
Уровень: Средний
Автомат обрабатывает натуральное число 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
R = []
Создаем пустой список R для хранения чисел, которые будут соответствовать заданным условиям.
for n in range(2, 1000):
Запускаем цикл, перебирающий числа от 2 до 999 включительно.
s = f'{n:b}'
Преобразуем текущее число n в строку, содержащую его двоичное представление.
try:
Начинаем блок try для обработки возможных исключений в последующем коде.
m = s.rindex('0')
Находим индекс последнего вхождения символа '0' в строке s.
s = s[:m] + s[:2] + s[m+1:]
Формируем новую строку: оставляем часть до последнего '0', вставляем первые два символа исходной строки и добавляем оставшуюся часть исходной строки после последнего '0'.
s = s[::-1]
Переворачиваем строку s задом наперед.
r = int(s, 2)
Преобразуем строку s обратно в целое число из двоичной системы счисления.
if r == 119:
Проверяем, равно ли получившееся число 119.
R.append(n)
Если условие верно, добавляем исходное число n в список R.
except Exception as E:
Обрабатываем возможные исключения, которые могут возникнуть в блоке try.
print(s, E)
В случае исключения выводим текущую строку s и описание ошибки E.
print(max(R))
Выводим максимальное число из списка R.
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Е.Джобс
Уровень: Средний
Автомат обрабатывает натуральное число 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
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Демоверсия 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
R = []
Создаем пустой список R для хранения результирующих чисел.
for n in range(1, 12+1):
Итерируем по числам n от 1 до 12 включительно.
s = f'{n:b}'
Преобразуем текущее значение n в двоичную строку s.
if n % 2 == 0:
Проверяем, является ли текущее число n четным.
s = '10' + s
Если n четное, добавляем '10' в начало строки s.
else:
В противном случае, если n нечетное.
s = '1' + s + '01'
Добавляем '1' в начало и '01' в конец строки s.
r = int(s, 2)
Преобразуем измененную строку s из двоичной системы в десятичное число и сохраняем его в r.
R.append(r)
Добавляем полученное десятичное число r в список R.
print(max(R))
Печатаем максимальное значение из списка R.
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Кабанов А
Уровень: Средний
Автомат обрабатывает натуральное число 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
for n in range(130+1, 255+1):
- Начинаем цикл с числами от 131 до 255 (включительно).
s = f'{n:b}'.zfill(8)
- Преобразуем число n в двоичную строку и дополняем её нулями слева до 8 символов.
s = s[:2] + s[-2:]
- Извлекаем первые две и последние две цифры двоичной строки и объединяем их.
r = int(s, 2)
- Преобразуем получившуюся строку обратно в десятичное число.
if r == 10:
- Проверяем, равен ли результат 10.
print(n)
- Если условие выполнено, выводим значение n.
break
- Завершаем выполнение цикла после нахождения первого подходящего числа.
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥5 4 1
Автор: Л.Шастин
Уровень: Средний
На вход алгоритма подаётся натуральное число 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:
R = []
Создается пустой список R для хранения подходящих результатов.
for n in range(1, 1000):
Цикл перебирает числа от 1 до 999 включительно.
s = f'{n:o}'
Число n преобразуется в восьмеричную (octal) систему счисления и сохраняется в строку s.
if n % 2 == 0:
Проверяется, четное ли число n.
for x in '1357':
Если число четное, то перебираются нечетные цифры 1, 3, 5, 7.
s = s.replace(x, '2')
Каждую нечетную цифру в строке s заменяют на 2.
else:
Если число n нечетное, выполняется этот блок.
s = '3' + s[1:-1] + '3'
Для нечетных чисел:
- Первый символ строки s заменяется на '3'.
- Последний символ заменяется на '3'.
- Середина строки (s[1:-1]) остается без изменений.
Пример: s = '1234' → '323' (первая и последняя цифры заменены на 3).
r = int(s, 8)
Строка s (в восьмеричной системе) преобразуется обратно в десятичное число.
if r < 300:
Если полученное число r меньше 300, оно добавляется в список R.
print(max(R))
В конце выводится максимальное число из списка R.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥4👍3🔥3
Собрал для вас основные моменты, которые важно знать при решении 5 номера. Для закрепления материала оставляю ссылку на подборку всех 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
Автор: ЕГКР 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
В этом типе нужно использовать функцию для перевода в троичную систему счисления.
n = 24
num_2 = bin(n)[2:] # 11000
num_8 = oct(n)[2:] # 30
num_16 = hex(n)[2:] # 18
n = 24
num_2 = f'{n:b}' # 11000
num_8 = f'{n:o}' # 30
num_16 = f'{n:x}' # 18
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
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 реакций, после этого заливаю следующую (свежую) шпору
Please open Telegram to view this post
VIEW IN TELEGRAM
5❤16 8👍7 4
На вход алгоритма подаётся натуральное число 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
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤🔥5 4❤3