Информатика | Илья Андрианов | itpy 🧑‍💻
1.04K subscribers
264 photos
20 videos
19 files
630 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
🚩 Разбор номера 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
🐍 Все методы строк в Python, которые понадобятся на ЕГЭ #tpy 

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

1⃣ .strip()
Метод strip() удаляет пробелы (или другие символы) из начала и конца строки. Это полезно для очистки пользовательского ввода.
text = "  Привет, мир!  "
cleaned_text = text.strip()
print(cleaned_text) # "Привет, мир!"



2⃣ .lower() и .upper()
Эти методы позволяют изменять регистр строки. lower() преобразует строку в нижний регистр, а upper() – в верхний.
text = "ПрIvEt"
print(text.lower()) # "привет"
print(text.upper()) # "ПРИВЕТ"



3⃣ .replace()
Метод replace(old, new, count) заменяет подстроку old на new в строке count раз.
text = "Я люблю Python!"
new_text = text.replace("Python", "программирование")
print(new_text) # "Я люблю программирование!"



4⃣ .split()
Метод split(separator) разделяет строку на части по указанному разделителю. Если разделитель не указан, используется пробел.
text = "яблоко груша банан"
fruits = text.split() # по умолчанию разделяет по пробелам
print(fruits) # ['яблоко', 'груша', 'банан']



5⃣ .join()
Метод join(iterable) соединяет элементы списка (или другого итерируемого объекта) в строку с указанным разделителем.
fruits = ['яблоко', 'груша', 'банан']
result = ', '.join(fruits)
print(result) # "яблоко, груша, банан"



6⃣ .find()
Метод find(substring) ищет подстроку в строке и возвращает индекс, с которого начинается первая встреча. Если подстрока не найдена, возвращает -1.
text = "Привет, мир!"
index = text.find("мир")
print(index) # 8



7⃣ .count()
Метод count(substring) возвращает количество вхождений подстроки в строку.
text = "яблоко, груша, яблоко"
count = text.count("яблоко")
print(count) # 2



8⃣ .startswith() и .endswith()
Эти методы проверяют, начинается ли строка с указанной подстроки или заканчивается ли ею.
text = "Привет, мир!"
print(text.startswith("Привет")) # True
print(text.endswith("мир!"))   # True


Практикуйтесь в использовании этих методов, чтобы запомнить синтаксис и логику работы с ними. Удачи в подготовке!

Информатика ЕГЭ | itpy 🧑‍💻
Поддержать автора донатом 🍊
Please open Telegram to view this post
VIEW IN TELEGRAM
855
🖥 Все функции строк в Python, которые понадобятся на ЕГЭ #tpy

В Python есть ряд встроенных функций, которые могут работать со строками и другими коллекциями. Эти функции помогут вам эффективно обрабатывать текстовую информацию. Давайте рассмотрим каждую из них с примерами.

🚩 len()
Функция len() возвращает длину строки (количество символов в строке).
text = "Привет, мир!"
length = len(text)
print(length) # 13 (включая пробел и знак препинания)



🚩max() и min()
Функции max() и min() ищут максимальный и минимальный элементы в последовательности. При работе со строками, они будут выдавать соответственно строку с максимальным или минимальным символом на основе их ASCII (или Unicode) значений.
text = "abcde"
max_char = max(text)
min_char = min(text)

print(max_char) # "e"
print(min_char) # "a"


Если строка состоит из символов, имеющих различный регистр, учтите, что символы в верхнем регистре имеют меньшие значения, чем в нижнем.
text = "Python"
max_char = max(text)
min_char = min(text)

print(max_char) # "y" (максимальный символ)
print(min_char) # "P" (минимальный символ)



🚩sorted()
Функция sorted() возвращает новый список, содержащий элементы исходного итерируемого объекта, отсортированные по возрастанию. При этом строки сортируются посимвольно.
text = "hello"
sorted_text = sorted(text)
print(sorted_text) # ['e', 'h', 'l', 'l', 'o']


Чтобы получить отсортированную строку, можно использовать метод join():
sorted_string = ''.join(sorted(text))
print(sorted_string) # "ehllo"



🚩set()
Функция set() создает множество, состоящее из уникальных элементов. При работе со строками это позволяет удалить дубликаты.
text = "hello world"
unique_chars = set(text)
print(unique_chars) # {'h', 'e', 'l', 'o', ' ', 'w', 'r', 'd'}


☝️Заметьте, что при использовании множества порядок символов не сохраняется, поскольку множества не имеют порядка.

Данные функции являются мощными инструментами в обработке строк в Python. Их понимание и умелое использование поможет вам эффективно решать задачи на экзаменах и в программировании в целом.

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


🚩 Условие задачи:
У исполнителя есть три команды, которым присвоены номера:
A. Прибавить 2
B. Прибавить 3
C. Умножить на 2

Сколько существует программ, для которых при исходном числе 3 результатом является число 20, а последняя в них команда - A или С?


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


👩‍💻 Код решения:
def F(a,b, c: str):
if a >= b:
return a == b and c[-1] != 'B'
return F(a + 2, b, c + 'A') + F(a + 3, b, c + 'B') + F(a*2, b, c + 'C')

print(F(3,20,''))

# Ответ: 60


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

1️⃣
def F(a,b, c: str):
Объявление функции F с тремя параметрами: числовыми параметрами a, b и строковым параметром c


2️⃣
if a >= b:
Проверяем, если значение a больше или равно значению b


3️⃣
return a == b and c[-1] != 'B'
Возвращаем результат логического выражения, которое проверяет, что a равно b и последняя буква строки c не равна 'B'


4️⃣
return F(a + 2, b, c + 'A') + F(a + 3, b, c + 'B') + F(a*2, b, c + 'C')
В противном случае возвращаем сумму результатов рекурсивных вызовов функции F с измененными параметрами: добавляем к a значения 2, 3 и умножаем его на 2, а к строке c добавляем 'A', 'B' и 'C' соответственно


5️⃣
print(F(3,20,''))
Вызываем функцию F с начальными аргументами 3, 20 и пустой строкой, затем выводим результат вызова


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Поддержать автора донатом 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
954
This media is not supported in your browser
VIEW IN TELEGRAM
2⃣4⃣ Разбор номера #kege по информатике #ЕГЭ24
Автор: Л. Шастин, Вариант 7 (2024)
Уровень: Средний


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

Примечание. Гласные буквы латинского алфавита: A, E, I, O, U, Y.


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


👩‍💻 Код решения:
s = open('24.txt').readline()
for x in 'AEIOUY':
s = s.replace(x, '* ')
print(max([len(x) for x in s.split()]))

# Ответ: 9052


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

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


2️⃣
for x in 'AEIOUY':
Начинаем цикл, который будет поочередно обрабатывать каждую букву из строки 'AEIOUY'


3️⃣
s = s.replace(x, '* ')
Заменяем каждую гласную букву x в строке s на комбинацию символов '* '


4️⃣
print(max([len(x) for x in s.split()]))
Разбиваем строку s по пробелам, находим длину каждого полученного фрагмента и выводим максимальную длину этих фрагментов


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

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


🚩 Условие задачи:
Сеть задана IP-адресом 119.124.96.0 и маской сети 255.255.240.0. Сколько в этой сети IP-адресов, двоичная запись которых оканчивается на 0?


👩‍💻 Код решения:
from ipaddress import *
net = ip_network('119.124.96.0/255.255.240.0', 0)
cnt = 0
for ip in net:
s = f'{ip:b}'
# if s.endswith('0'):
if s[-1] == '0':
cnt += 1
print(cnt)

# Ответ: 2048


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

1️⃣
from ipaddress import *
Импортируем все классы и функции из модуля ipaddress, который обеспечивает удобную работу с IP-адресами и сетями


2️⃣
net = ip_network('119.124.96.0/255.255.240.0', 0)
Создаем объект сети net с заданным IP-адресом и маской подсети, указываем, что это IPv4 сеть с использованием маски в десятичном формате


3️⃣
cnt = 0
Инициализируем счетчик cnt, который будет хранить количество IP-адресов, удовлетворяющих определенному условию


4️⃣
for ip in net:
Начинаем цикл, который перебирает каждый IP-адрес в заданной сети net


5️⃣
s = f'{ip:b}'
Преобразуем текущий IP-адрес ip в двоичное строковое представление с помощью форматирования


6️⃣
# if s.endswith('0'):
Cтарая версию проверки, тоже работает.


7️⃣
if s[-1] == '0':
Проверяем, оканчивается ли двоичная строка s на '0', то есть является ли последний бит нулем


8️⃣
cnt += 1
Увеличиваем счетчик cnt на единицу, если последний бит IP-адреса равен нулю


9️⃣
print(cnt)
Выводим количество IP-адресов в сети net, у которых последний бит равен нулю


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Поддержать автора донатом 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
65
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
С удивлением обнаружил, что на канале нет разборов «базовых» задач ФИПИ. Мне казалось, что нет смысла разбирать совсем базовые задания, и поэтому я делал посты с более сложными задачами.
843
Стоит ли добавить разборы основных прототипов? Хотя они уже представлены в шпаргалках 🤔
Anonymous Poll
69%
Да, конечно надо
20%
Смысла нет, можно улучшать шпаргалки
12%
Нет, для меня не актуально
655
🐍 Множества в Python #tpy 

Множества — это неупорядоченные коллекции уникальных элементов. Они полезны для хранения элементов без дублирования и для выполнения операций над множествами, таких как объединение, пересечение и разность. Давайте рассмотрим основы множеств в Python.


🚩 Создание множеств
# Создание пустого множества
my_set = set()

# Создание множества с элементами
my_set = {1, 2, 3, 4, 5}

# Пример множества со строками
fruits = {"apple", "banana", "cherry"}



🚩 Основные операции с множествами
# Добавление элемента в множество
my_set.add(6)
print(my_set) # {1, 2, 3, 4, 5, 6}

# Удаление элемента из множества
my_set.remove(3)
print(my_set) # {1, 2, 4, 5, 6}

# Проверка наличия элемента в множестве
print(4 in my_set) # True
print(10 in my_set) # False


Множества в Python — мощный инструмент для работы с уникальными данными и выполнения различных операций над ними.

Информатика ЕГЭ | itpy 🧑‍💻
Поддержать автора донатом🍊
Please open Telegram to view this post
VIEW IN TELEGRAM
83332
📱 Основные операции с множествами в Python #tpy 

Множества в Python поддерживают множество операций, таких как объединение, пересечение, разность и симметрическая разность. Давайте рассмотрим их подробнее.

🚩 Объединение множеств
Объединение возвращает множество, содержащее все элементы обоих множеств.
set1 = {1, 2, 3}
set2 = {3, 4, 5}
union_set = set1.union(set2)
print(union_set) # {1, 2, 3, 4, 5}



🚩 Пересечение множеств
Пересечение возвращает множество, содержащее только общие элементы обоих множеств.
intersection_set = set1.intersection(set2)
print(intersection_set) # {3}



🚩 Разность множеств
Разность возвращает множество, содержащее элементы, которые есть в первом множестве, но отсутствуют во втором.
difference_set = set1.difference(set2)
print(difference_set) # {1, 2}



🚩 Симметрическая разность множеств
Симметрическая разность возвращает множество, содержащее элементы, которые присутствуют в одном из множеств, но не в обоих.
symmetric_difference_set = set1.symmetric_difference(set2)
print(symmetric_difference_set) # {1, 2, 4, 5}


Эти операции помогают эффективно работать с множествами и управлять уникальными данными. 

Поддержать автора донатом 🍊
Please open Telegram to view this post
VIEW IN TELEGRAM
554
🔤🔤🔤🔤🔤🔤🔤🔤 🔤🔤🔤🔤🔤

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

Таким образом можно найти подсказку, исправить опечатку в своем коде, или найти вдохновение в чужом решении, чтобы написать более оптимальный код 💻

Я настоятельно призываю вас делиться своими вариантами решений, даже если в задаче просто просят "оставить ответ" 🫡

P.S. 26-27 номера скоро будут добавлены☝️

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


🚩 Условие задачи:
Все пятибуквенные слова, в составе которых могут быть только русские буквы Л, А, Й, М, записаны в алфавитном порядке и пронумерованы начиная с 1.
Вот начало списка:
1. ААААА
2. ААААЙ
3. ААААЛ
4. ААААМ
5. АААЙА

Под каким номером в списке идёт последнее слово, которое не содержит ни одной буквы М, ни одной буквы Л и не содержит букв Й стоящих рядом?


🚩 Теоретическая справка:
Простейшую вариацию решения этого номера опубликую в комментариях к этому посту. Делитесь своими решениями!


👩‍💻 Код решения:
from itertools import *
R = []
for num, p in enumerate(product(sorted('ЛАЙМ'), repeat=5), 1):
word = ''.join(p)
if 'М' not in word and 'Л' not in word:
if 'ЙЙ' not in word:
R.append(num)
print(max(R))

# Ответ: 274


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

1⃣ from itertools import *
Импортируем все функции из модуля itertools для работы с итераторами.


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


3⃣ for num, p in enumerate(product(sorted('ЛАЙМ'), repeat=5), 1):
Используем product для генерации всех возможных комбинаций 5 букв из слова 'ЛАЙМ', сортируем буквы и пронумеровываем их с 1.


4⃣ word = ''.join(p)
Объединяем кортеж p в строку для получения текущего слова.


5⃣ if 'М' not in word and 'Л' not in word:
Проверяем, что буквы 'М' и 'Л' отсутствуют в текущем слове.


6⃣ if 'ЙЙ' not in word:
Проверяем, что двойная буква 'ЙЙ' отсутствует в текущем слове.


7⃣ R.append(num)
Если условия выполнены, добавляем номер комбинации в список R.


8⃣ print(max(R))
Выводим максимальный номер из списка R, который соответствует самой последней подходящей комбинации.


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

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


🚩 Условие задачи:
Определите количество 15-ричных пятизначных чисел, в записи которых ровно одна цифра 8 и не менее двух цифр с числовым значением, превышающим 9.


🚩 Теоретическая справка:
В подобных задачах с цифрами обязательно необходимо добавлять проверку num[0] != '0', так как число не может начинаться с нуля.


👩‍💻 Код решения:
from itertools import *
cnt = 0
for p in product('0123456789ABCDE', repeat=5):
num = ''.join(p)
if num[0] != '0' and num.count('8') == 1:
if len([x for x in num if int(x, 15) > 9]) >= 2:
cnt += 1
print(cnt)

# Ответ: 83175


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

1⃣ from itertools import *
Импортируем все функции из модуля itertools для работы с итераторами.


2⃣ cnt = 0
Инициализируем переменную счётчика cnt для подсчета подходящих комбинаций.


3⃣ for p in product('0123456789ABCDE', repeat=5):
Используем функцию product для генерации всех возможных комбинаций длиной 5 из символов '0123456789ABCDE'.


4⃣ num = ''.join(p)
Объединяем кортеж p в строку для получения текущего числа в виде строки.


5⃣ if num[0] != '0' and num.count('8') == 1:
Проверяем, что первое число не равняется '0' и цифра '8' встречается в строке ровно один раз.


6⃣ if len([x for x in num if int(x, 15) > 9]) >= 2:
Проверяем, что в числе присутствует как минимум две цифры, больше 9 в шестнадцатеричном представлении, то есть 'A', 'B', 'C', 'D', 'E'.


7⃣ cnt += 1
Если все условия выполнены, увеличиваем счётчик cnt на 1.


8⃣ print(cnt)
Выводим итоговое значение счётчика cnt, которое соответствует количеству подходящих комбинаций.


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Наша Stepik подборкой задач 😼
Please open Telegram to view this post
VIEW IN TELEGRAM
633
Давно у нас не было интересных задачек 👾
Please open Telegram to view this post
VIEW IN TELEGRAM
542
Ещё один пример на ту же тему 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
432
This media is not supported in your browser
VIEW IN TELEGRAM
🚩 Разбор номера 17672 #kege по информатике #ЕГЭ9
Автор: Пересдача 04.07.2024
Уровень: Базовый


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


🚩 Теоретическая справка:
Для решения этого номера кодом необходимо конвертировать .xls файл в .txt, но на экзамене будет доступен .csv формат, который можно будет открыть сразу же без конвертации.


👩‍💻 Код решения:
cnt = 0
for s in open('9.txt'):
M = sorted([int(x) for x in s.split()])
# if M[0] + M[-1] < M[1] + M[2]:
# if max(M) + min(M) < sum(M) - max(M) - min(M):
if M[0] + M[-1] < M[1] + M[2]:
cnt += 1
print(cnt)

# Ответ: 9997


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

1⃣ cnt = 0
Инициализируем переменную счётчика cnt для подсчета строк, которые удовлетворяют условию.


2⃣ for s in open('9.txt'):
Открываем файл '9.txt' и построчно читаем его содержимое в цикле.


3⃣ M = sorted([int(x) for x in s.split()])
Разбиваем строку s на отдельные элементы, приводим их к целым числам и сортируем их, результат сохраняем в список M.


4⃣ if M[0] + M[-1] < M[1] + M[2]:
Проверяем условие: сумма первого и последнего элементов списка меньше суммы второго и третьего элементов.


5⃣ cnt += 1
Если условие выполняется, увеличиваем счётчик cnt на 1.


6⃣ print(cnt)
Выводим итоговое значение счётчика cnt, которое соответствует количеству строк, удовлетворяющих условию.


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

🚩 Условие задачи:
Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 100 идущих подряд
цифр 9?

ПОКА нашлось (33333) ИЛИ нашлось (999)
ЕСЛИ нашлось (33333)
ТО заменить (33333, 99)
ИНАЧЕ заменить (999, 3)


🚩 Теоретическая справка:
Задачи 12 номера можно назвать типовыми (не редкий случай для нашего экзамена), запомнить нужно только несколько основных вещей: 1) строка умноженная на число будет дублироваться 2) всегда пересоздаем строку s = s.replace() иначе строка не изменится 3) в методе .replace('a', 'b', 1) всегда ставим единичку - так как замены производятся последовательно.


👩‍💻 Код решения:
s = '9' * 100
while '33333' in s or '999' in s:
if '33333' in s:
s = s.replace('33333', '99', 1)
else:
s = s.replace('999', '3', 1)
print(s)

# Ответ: 333


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

1⃣ s = '9' * 100
Инициализируем строку s, состоящую из 100 символов '9'.


2⃣ while '33333' in s or '999' in s:
Запускаем цикл, который будет продолжаться до тех пор, пока в строке s присутствует подстрока '33333' или '999'.


3⃣ if '33333' in s:
Проверяем, присутствует ли в строке подстрока '33333'.


4⃣ s = s.replace('33333', '99', 1)
Если '33333' присутствует, заменяем её на '99' (первая замена слева направо).


5⃣ else:
Если подстроки '33333' нет в строке, выполняется следующий блок кода.


6⃣ s = s.replace('999', '3', 1)
Если '999' присутствует, заменяем её на '3' (первая замена слева направо).


7⃣ print(s)
Выводим итоговое значение строки s после завершения всех замен, когда условия больше не выполняются.


Информатика ЕГЭ | itpy 🧑‍💻
Наша Stepik подборкой задач 😼
Please open Telegram to view this post
VIEW IN TELEGRAM
2654
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 17676 #kege по информатике #ЕГЭ13
Автор: Пресдача 04.07.2024
Уровень: Базовый


🚩 Условие задачи:
Сеть задана IP-адресом 115.192.0.0 и сетевой маской 255.192.0.0.
Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса не кратно 3?


🚩 Теоретическая справка:
Во всех ФИПИ вариантах/пробниках и на основном экзамене был представлен именно этот прототип, занятное наблюдение!


👩‍💻 Код решения:
from ipaddress import *
net = ip_network('115.192.0.0/255.192.0.0', 0)
cnt = 0
for ip in net:
b_ip = f'{ip:b}'
if b_ip.count('1') % 3 != 0:
cnt += 1
print(cnt)

# Ответ: 2796202


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

1⃣
from ipaddress import *
Импортируем все функции из модуля ipaddress для работы с IP адресами и сетями.


2⃣ net = ip_network('115.192.0.0/255.192.0.0', 0)
Создаём объект сети net, используя адрес сети '115.192.0.0' и маску подсети '255.192.0.0'. 0 указывает на IPv4-адрес.


3⃣ cnt = 0
Инициализируем переменную счётчика cnt для подсчета IP-адресов, удовлетворяющих условию.


4⃣ for ip in net:
Проходим в цикле по каждому IP-адресу в сети net.


5⃣ b_ip = f'{ip:b}'
Преобразуем текущий IP-адрес в двоичное строковое представление и сохраняем его в переменную b_ip.


6⃣ if b_ip.count('1') % 3 != 0:
Проверяем, что количество единиц в двоичном представлении IP-адреса не кратно 3.


7⃣ cnt += 1
Если условие выполняется, увеличиваем счётчик cnt на 1.


8⃣ print(cnt)
Выводим итоговое значение счётчика cnt, которое соответствует количеству подходящих IP-адресов.


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