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

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

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

📺 YouTube: clck.ru/3FwqbX

🙋‍♂️ Я автор: @ilandroxxy
Download Telegram
🚩 Разбор номера 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
🚩🚩 Разбор номера 16388 #kege по информатике #ЕГЭ24
Автор: ЕГКР 27.04.24
Уровень: Базовый


🚩 Условие задачи:
В прилагаемом файле определите максимальное количество символов в непрерывной подпоследовательности, состоящей из идущих подряд групп символов KLMN в указанном порядке, при этом в начале и в конце искомой последовательности группа символов KLMN может быть неполной.

Файл оставлю в комментариях 👇

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


👩‍💻 Код решения:
s = open('24.txt').readline()
count = 3
maxi = 0
for i in range(len(s)-3):
if s[i:i+4] in ('KLMN', 'LMNK', 'MNKL', 'NKLM'):
count += 1
maxi = max(maxi, count)
else:
count = 3
print(maxi)

# Ответ: 182


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

1⃣ s = open('24.txt').readline()
Чтение строки из файла "24.txt" и сохранение ее в переменную s.


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


3⃣ maxi = 0
Инициализация переменной maxi со значением 0, которая будет хранить максимальное количество найденных последовательностей.


4⃣ for i in range(len(s)-3):
Цикл, перебирающий индексы от 0 до len(s)-4 для итерации по всем четверным подстрокам строки s.


5⃣ if s[i:i+4] in ('KLMN', 'LMNK', 'MNKL', 'NKLM'):
Проверка, содержится ли текущая четверная подстрока строки s в заданных последовательностях 'KLMN', 'LMNK', 'MNKL' или 'NKLM'.


6⃣ count += 1
Увеличение значения переменной count на 1, если найдена подходящая четверная последовательность.


7⃣ maxi = max(maxi, count)
Обновление значения переменной maxi на максимальное из текущего значения и count.


8⃣ else:
В случае, если текущая четверная подстрока не соответствует заданным последовательностям:


0⃣ count = 3
Сброс значения переменной count до 3 для начала подсчета заново.


🔟 print(maxi)
Вывод максимального количества найденных последовательностей заданного типа в строке s после завершения цикла.


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Поддержать автора: boosty 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
1177
💡Полезные команды, которые ускорят вашу работу с кодом/текстом #useful

Информатика ЕГЭ | itpy 🧑‍💻
Поддержать автора: boosty 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
1655
This media is not supported in your browser
VIEW IN TELEGRAM
1⃣7⃣ Шпаргалка ЕГЭ | Задание #ЕГЭ17 #шпора

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

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


🚩 Считываем файл 17.txt в общий список M:
M = [int(x) for x in open('17.txt')]



Три основных типа задач 17 номера:

🚩 В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
M = [1, 2, 3, 4, 5]
for i in range(len(M)-1):
x, y = M[i:i+2]
print(f'{x}{y}', end=' ')

# Вывод:
# 12 23 34 45


🚩 Назовём тройкой три идущих подряд элемента последовательности.
M = [1, 2, 3, 4, 5]
for i in range(len(M)-2):
x, y, z = M[i:i+3]
print(f'{x}{y}{z}', end=' ')

# Вывод:
# 123 234 345


🚩 В данной задаче под парой подразумевается два различных элемента последовательности.
M = [1, 2, 3, 4, 5]
for i in range(0, len(M)):
for j in range(i+1, len(M)):
x, y = M[i], M[j]
print(f'{x}{y}', end=' ')
print()

# Вывод:
# 12 13 14 15
# 23 24 25
# 34 35
# 45



Информатика ЕГЭ | itpy 🧑‍💻
Поддержать автора: boosty 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
221463
👩‍💻 Мини-шпаргалка для🚩номера #ЕГЭ6 #tpy

Благодарю вас за активность! Не удержался и решил опубликовать эту шпаргалку уже сегодня 🫶

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


🚩 Условие задачи:
Файл разбит на строки различной длины. Определите максимальную длину цепочки символов, состоящей из повторяющихся фрагментов XYZ.


👩‍💻 Код решения:
s = open('24.txt').readlines()
maxi = 0
for x in s:
count = 2
for i in range(len(x)-2):
if x[i:i+3] in ('XYZ', 'YZX', 'ZXY'):
count += 1
maxi = max(maxi, count)
else:
count = 2
print(maxi)

# Ответ: 53


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

1⃣ s = open('24.txt').readlines()
Чтение всех строк из файла "24.txt" и сохранение их в виде списка строк в переменную s.


2⃣ maxi = 0
Инициализация переменной maxi со значением 0, которая будет хранить максимальное количество найденных последовательностей.


3⃣ for x in s:
Цикл, который перебирает строки из списка s для анализа каждой строки отдельно.


4⃣ count = 2
Инициализация переменной count со значением 2, которая будет использоваться для подсчета последовательности в текущей строке.


5⃣ for i in range(len(x)-2):
Внутренний цикл, который перебирает индексы от 0 до длины строки x минус 2 для итерации по каждой тройной подстроке в текущей строке.


6⃣ if x[i:i+3] in ('XYZ', 'YZX', 'ZXY'):
Проверка условия: если текущая тройная подстрока x присутствует в кортеже заданных строк 'XYZ', 'YZX' или 'ZXY'.


7⃣ count += 1
Увеличение значения переменной count на 1, если найдена подходящая тройная последовательность.


8⃣ maxi = max(maxi, count)
Обновление значения переменной maxi на большее из текущего значения и count.


0⃣ else:
В случае, если текущая тройная подстрока не соответствует заданным последовательностям:


1⃣0⃣ count = 2
Сброс значения переменной count на 2 для начала подсчета заново в текущей строке.


1⃣1⃣ print(maxi)
Вывод наибольшего значения переменной maxi.


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

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


🚩 Условие задачи:
Текстовый файл состоит из символов T, U, V, W, X, Y и Z.

Определите в прилагаемом файле максимальную длину подстроки, состоящую из пар символов XX, YY или ZZ в произвольном порядке, при этом ни одна пара не должна повторяться два раза подряд.


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


👩‍💻 Код решения:
s = open('24.txt').readline()
for a in 'TUVW':
s = s.replace(a, ' ')
for a in 'XYZ':
while a*4 in s:
s = s.replace(a*4, f'{a*2} {a*2}')
while a*3 in s:
s = s.replace(a*3, f'{a*2} {a*2}')
print(max([len(x) for x in s.split()]))
print(max(map(len, s.split())))

# Ответ: 52


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

1⃣ s = open('24.txt').readline()
Чтение первой строки из файла "24.txt" и сохранение ее содержимого в переменную s.


2⃣ for a in 'TUVW':
Цикл, который перебирает символы 'T', 'U', 'V', 'W' для замены их на пробел в строке s.


3⃣ s = s.replace(a, ' ')
Замена каждого символа 'T', 'U', 'V', 'W' на пробел в строке s.


4⃣ for a in 'XYZ':
Цикл, который перебирает символы 'X', 'Y', 'Z' для выполнения дополнительных преобразований в строке s.


5⃣ while a*4 in s:
Пока последовательность из 4 символов a присутствует в строке s.


6⃣ s = s.replace(a*4, f'{a*2} {a*2}')
Замена последовательности из 4 символов a на строку, состоящую из 2 символов a, пробела и еще 2 символов a.


7⃣ while a*3 in s:
Пока последовательность из 3 символов a присутствует в строке s.


8⃣ s = s.replace(a*3, f'{a*2} {a*2}')
Замена последовательности из 3 символов a на строку, состоящую из 2 символов a, пробела и еще 2 символов a.


0⃣ print(max([len(x) for x in s.split()]))
Вывод максимальной длины слова после разделения строки s по пробелам и определения максимальной длины с помощью List Comprehension.


🔟 print(max(map(len, s.split())))
Еще одна аналогичная запись.


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Поддержать автора: boosty 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
1074
👩‍💻 Ещё одна шпаргалка для задания с черепашкой #ЕГЭ6 #tpy

Информатика ЕГЭ | itpy 🧑‍💻
Поддержать автора: boosty 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
12533
Обращаюсь к вам, уважаемые подписчики Telegram Premium, с просьбой о помощи #sos

Прошу вас поддержать меня своим голосом, а в благодарность я постараюсь радовать вас еще более интересным и качественным контентом🔥

Свой голос вы можете оставить по ссылке: Поддержать автора

Благодарю всех неравнодушных за вашу поддержку! 💛

Поддержать автора донатом 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
1785
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 18289 #reshu по информатике #ЕГЭ23
Уровень: Средний


Задач из ОГЭ, 5 номер, но считаю её весьма полезной, так как это усложненная вариация 23 номера ЕГЭ.

🚩 Условие задачи:
1. раздели на 2
2.  вычти 1

Составьте алгоритм получения из чиcла 65 числа 4, содержащий не более 5 команд. В ответе запишите только номера команд.


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


👩‍💻 Код решения:
def F(a, b, t):
if a < b or len(t) > 5:
return 0
elif a == b and len(t) <= 5:
print(t)
return 1
else:
return F(a / 2, b, t+'1') + F(a-1, b, t+'2')

F(65, 4, '')

# Ответ: 21111


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

1⃣ def F(a, b, t):
Определение функции F с тремя параметрами a, b, и t.


2⃣ if a < b or len(t) > 5:
Проверка условия: если a меньше b или длина строки t превышает 5 символов.


3⃣ return 0
Возврат значения 0, если условие из пункта 2 истинно.


4⃣ elif a == b and len(t) <= 5:
Другое условие: если a равно b и длина строки t не превышает 5 символов.


5⃣ print(t)
Вывод текущего состояния строки t.


6⃣ return 1
Возврат значения 1, если условие из пункта 4 истинно.


7⃣ else:
В случае, если ни одно из вышеперечисленных условий не выполнено.


8⃣ return F(a / 2, b, t+'1') + F(a-1, b, t+'2')
Рекурсивный вызов функции F с различными значениями аргументов: для первого вызова a уменьшается вдвое и к строке t добавляется символ '1', для второго вызова a уменьшается на 1, к строке t добавляется символ '2'.


0⃣ F(65, 4, '')
Вызов функции F с начальными значениями a=65, b=4, и пустой строкой t.


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Поддержать автора: boosty 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
854
👩‍💻 Сохраняй шпаргалку для #ЕГЭ6 номера #tpy

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


🚩 Условие задачи:
Найдите последние семь цифр суммы F(2020) + F(2200).


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


👩‍💻 Код решения:
from functools import *
@lru_cache(None)
def F(n):
if n < 2025:
return n**2
if 2025 <= n < 2050:
return 2 * F(n-1) - F(n-2) + n
if 2050 <= n <= 2100:
return F(n-1) + 2 * F(n-2) + 3 * F(n-3)
if n > 2100:
return 2 * F(n-1) + F(n-2) + n

print(str(F(2020) + F(2200))[-7:])

Ответ: 5098903


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

1⃣ from functools import *
Импорт всех функций из модуля functools.


2⃣ @lru_cache(None)
Декоратор, который кэширует результаты выполнения функции F, чтобы избежать повторных вычислений.


3⃣ def F(n):
Определение функции F с одним параметром n.


4⃣ if n < 2025:
Проверка условия: если n меньше 2025.


5⃣ return n**2
Возврат квадрата числа n, если условие из пункта 4 истинно.


6⃣ if 2025 <= n < 2050:
Проверка условия: если n больше либо равно 2025 и меньше 2050.


7⃣ return 2 * F(n-1) - F(n-2) + n
Возврат значения, вычисленного по формуле, если условие из пункта 6 истинно.


8⃣ if 2050 <= n <= 2100:
Проверка условия: если n от 2050 до 2100 включительно.


0⃣ return F(n-1) + 2 * F(n-2) + 3 * F(n-3)
Возврат значения, вычисленного по формуле, если условие из пункта 8 истинно.


1⃣0⃣ if n > 2100:
Проверка условия: если n больше 2100.


1⃣1⃣ return 2 * F(n-1) + F(n-2) + n
Возврат значения, вычисленного по формуле, если условие из пункта 10 истинно.


1⃣2⃣ print(str(F(2020) + F(2200))[-7:])
Вызов функции F с аргументами 2020 и 2200, вычисление их суммы, преобразование в строку, взятие последних семи символов и вывод результата.


Информатика ЕГЭ | itpy 🧑‍💻
Поддержать автора: boosty 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
1044
👩‍💻 Несколько способов как найти значение суммы числовых значений цифр в строке #tpy

Пример строки:
s = '3721893721'


Вариант 1:
summa1 = 0
for x in s:
summa1 += int(x)
print(summa1)


Вариант 2:
summa2 = 0
for i in range(0, 10):
summa2 += s.count(str(i)) * i
print(summa2)


# или: summa2 = s.count('1') + s.count('2') * 2 + ...


Вариант 3:
summa3 = sum(map(int, s))
print(summa3)


Вариант 4:
summa4 = sum([int(x) for x in s])
print(summa4)


# или: summa4 = sum([int(x) for x in s if x.isdigit()])


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


🚩 Условие задачи:
В некоторой системе счисления с основанием p < 37 выполняется равенство TH_p + NQ_p + U_p = 1L7_p

Определите значение 𝑝 и укажите его в ответе в десятичной системе счисления.


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


👩‍💻 Код решения:
for p in range(31, 36+1):  # U - 30
if int('TH', p) + int('NQ', p) + int('U', p) == int('1L7', p):
print(p)

# Ответ: 33


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

1⃣ for p in range(31, 36+1): # U - 30
Цикл for, который проходит по значениям p от 31 до 36 включительно. Комментарий указывает на то, что в данном случае символ 'U' представляет число 30 в системе счисления с основанием p.


2⃣ if int('TH', p) + int('NQ', p) + int('U', p) == int('1L7', p):
Условное выражение, которое проверяет, равно ли суммарное значение чисел, представленных строками 'TH', 'NQ' и 'U' в системе счисления с основанием p, числу, представленному строкой '1L7' в той же системе счисления.


3⃣ print(p)
Если условие из предыдущего пункта истинно, выводится значение p, при котором выполняется условие.


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Поддержать автора: boosty 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
1175