Информатика ЕГЭ | Илья Андрианов | itpy 🧑‍💻
1.12K subscribers
268 photos
22 videos
19 files
649 links
По рекламе: @ilandroxxy

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

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

📺 YouTube: clck.ru/3FwqbX

🙋‍♂️ Я автор: @ilandroxxy
Download Telegram
🚩🚩 Разбор этого номера #yandex по информатике #ЕГЭ25
Автор: Джобс Е.
Уровень:
Базовый

🚩 Условие задачи:
Назовём нетривиальным делителем натурального числа его делитель, не равный единице и самому числу. Найдите все натуральные числа, принадлежащие отрезку [106732567; 152673836] и имеющие ровно три нетривиальных делителя. Для каждого найденного числа запишите в ответе само число и его наибольший нетривиальный делитель. Найденные числа расположите в порядке возрастания.

Например, для числа 2018 имеем следующие делители 2 и 1009. Поэтому результатом (не принимая во внимание количества делителей) будет пара чисел 2018 1009.


👩‍💻 Код решения:
def divisors(x):
div = []
for j in range(2, int(x**0.5)+1):
if x % j == 0:
div.append(j)
div.append(x // j)
return sorted(set(div))


for x in range(106732567, 152673836+1):
if (x**0.5).is_integer():
d = divisors(x)
if len(d) == 3:
print(x, max(d))

Ответ:
112550881 1092727
131079601 1225043
141158161 1295029


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

1⃣ def divisors(x):
- Объявление функции divisors, которая принимает число x и возвращает его делители.


2⃣ div = []
- Создание пустого списка div для хранения делителей.


3⃣ for j in range(2, int(x**0.5)+1):
- Цикл по возможным делителям от 2 до квадратного корня из x (включительно).


4⃣ if x % j == 0:
- Проверка, делится ли x на j без остатка.


5⃣ div.append(j)
- Если j - делитель, добавляем его в список.


6⃣ div.append(x // j)
- Добавляем парный делитель (x разделить на j).


7⃣ return sorted(set(div))
- Возвращаем отсортированный список уникальных делителей.


8⃣ for x in range(106732567, 152673836+1):
- Основной цикл по числам от 106732567 до 152673836 включительно.


0⃣ if (x**0.5).is_integer():
- Проверка, является ли x полным квадратом (квадратный корень - целое число).


🔟 d = divisors(x)
- Если x - полный квадрат, находим все его делители.


1⃣1⃣ if len(d) == 3:
- Проверяем, что у числа ровно 3 делителя (не считая 1 и само число).


1⃣2⃣ print(x, max(d))
- Если условие выполняется, выводим число и его наибольший делитель.


#⃣ Полный список разборов в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
4❤‍🔥2🔥1
📎 Что такое файл .env, и зачем он нужен? #tpy

Если вы когда-либо работали с проектами на Python, Node.js или других языках, то, скорее всего, сталкивались с файлами .env. Но что они из себя представляют?

Файл .env - это секретный шкафчик для хранения переменных окружения!
В нем хранятся важные настройки: ключи API, пароли, настройки базы данных и другие конфиденциальные данные.


🔒 Почему это удобно?
- Безопасность: секретные данные не хранятся прямо в коде, их легко исключить из системы контроля версий.
- Гибкость: можно легко менять настройки между разными окружениями - тестовым, продакшеном и локальной разработкой.
- Удобство: все важные переменные сосредоточены в одном месте, их легко найти и обновить.


🚀 .env - это безопасный способ хранения конфиденциальной информации, если он используется локально и не попадает в публичные источники.
⚠️ Ведь его публичное размещение - серьёзная уязвимость!


#⃣ Вся теория для ЕГЭ в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
24❤‍🔥2🔥2
🚩 Разбор номера 17799 #kege по информатике #ЕГЭ8
Автор: В. Зарянкин
Уровень:
Средний

🚩 Условие задачи:
Все четырёхбуквенные слова, в составе которых могут быть только русские буквы А, Р, Г, У, М, Е, Н, Т, записаны в алфавитном порядке и пронумерованы начиная с 1.
Вот начало списка:

1. АААА
2. АААГ
3. АААЕ
4. АААМ
5. АААН
...

Под каким номером в списке идёт последнее слово, в котором все буквы различны и все символы располагаются в алфавитном порядке?



👩‍💻 Код решения:
from itertools import *
s = sorted('АРГУМЕНТ')
for n, p in enumerate(product(s, repeat=4), 1):
word = ''.join(p)
if len(word) == len(set(word)):
if list(word) == sorted(word):
print(n)

Ответ: 2424

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

1⃣ from itertools import *
- Импорт всех функций из модуля itertools (в данном случае используется product)


2⃣ s = sorted('АРГУМЕНТ')
- Создание отсортированного списка букв из слова "АРГУМЕНТ": ['А', 'Г', 'Е', 'М', 'Н', 'Р', 'Т', 'У']


3⃣ for n, p in enumerate(product(s, repeat=4), 1):
- Цикл по всем возможным комбинациям букв длиной 4 (с повторами)
- product(s, repeat=4) генерирует декартово произведение списка s на себя 4 раза
- enumerate добавляет нумерацию, начиная с 1


4⃣ word = ''.join(p)
- Объединение кортежа p в строку (слово из 4 букв)


5⃣ if len(word) == len(set(word)):
- Проверка, что все буквы в слове уникальны (длина слова равна длине множества его букв)


6⃣ if list(word) == sorted(word):
- Проверка, что буквы в слове идут в алфавитном порядке (слово равно своему отсортированному варианту)


7⃣ print(n)
- Если оба условия выполнены, выводится номер текущей комбинации


#⃣ Полный список разборов в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥31👍1
📂 Как открывать файлы в Python на ЕГЭ? #tpy
Примеры кодов для задач 9, 17, 24, 26, 27 из ЕГЭ:


0⃣
for M in open('9.txt'):
M = [int(i) for i in M.split()]
print(M)

▶️ Читаем файл построчно, каждую строку разбиваем на числа и сразу печатаем.


1⃣7⃣
M = [int(i) for i in open('17.txt')]
print(M)

▶️ Читаем все строки файла и превращаем в список чисел.


2⃣4⃣
s = open('24.txt').readline()

Считываем только первую строку файла.


2⃣6⃣
ans = []
for M in open('26.txt'):
M = [int(i) for i in M.split()]
ans.append(M)

Сохраняем каждую строку как список чисел, а потом собираем всё в общий список.


2⃣7⃣
f = open('27.А.txt').readlines()[1:]
for M in f:
M = [float(i.replace(',','.')) for i in M.split()]
x, y = M[0], M[1]
print(x, y)

▶️ Пропускаем первую строку, заменяем запятые на точки и превращаем в числа с плавающей точкой.


#⃣ Вся теория для ЕГЭ в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍53❤‍🔥2🔥2
🚩 Разбор этого номера #yandex по информатике #ЕГЭ9
Автор: Яндекс учебник
Уровень: Средний


🚩 Условие задачи:
Определите количество строк таблицы, содержащих числа, для которых выполнены все условия:

1. Четыре числа строки можно разбить на две пары чисел с равными суммами

2. Максимальное число строки меньше суммы трёх оставшихся чисел сумма чисел в строке чётна



👩‍💻 Код решения:
from itertools import permutations
cnt = 0
for s in open('0. files/9.csv'):
M = [int(x) for x in s.split(';')]
if sum(M) % 2 == 0:
if max(M) < sum(M) - max(M):
if any(p[0] + p[1] == p[2] + p[3] for p in permutations(M)):
cnt += 1
print(cnt)

Ответ: 139


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


1⃣ from itertools import permutations
· Импортируем функцию permutations для генерации всех перестановок


2⃣ cnt = 0
· Создаем счетчик и инициализируем его нулем


3⃣ for s in open('0. files/9.csv'):
· Открываем файл '9.csv' и построчно читаем его


4⃣ M = [int(x) for x in s.split(';')]
· Разбиваем строку по символу ';' и преобразуем каждый элемент в целое число


5⃣ if sum(M) % 2 == 0:
· Проверяем, что сумма всех чисел в строке четная


6⃣ if max(M) < sum(M) - max(M):
· Проверяем, что максимальное число меньше суммы всех остальных чисел


7⃣ if any(p[0] + p[1] == p[2] + p[3] for p in permutations(M)):
· Проверяем, существует ли такая перестановка 4 чисел, где сумма первых двух равна сумме последних двух


8⃣ cnt += 1
· Если все три условия выполнены, увеличиваем счетчик на 1


0⃣ print(cnt)
· Выводим итоговое количество строк, удовлетворяющих всем условиям


#⃣ Полный список разборов в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥4🔥1
🚀 Типы данных в Python, которые считаются структурами данных #tpy

🔍- Это те типы, которые позволяют хранить и организовывать коллекции элементов.

👩‍💻 Основные структуры данных в Python:
📎 list - это изменяемый упорядоченный список. Можно добавлять, удалять, менять элементы. Например:
fruits = ['яблоко', 'банан', 'апельсин'] 📎

📎 tuple - неизменяемая последовательность. Отлично подходит, когда нужно зафиксировать набор данных:
coordinates = (10, 20) 📎

📎 set - множество уникальных элементов. Быстро искать, удалять дубликаты:
unique_numbers = {1, 2, 3} 📎

📎 dict - словарь, отображение ключей на значения. Очень удобно для хранения пар "ключ-значение":
person = {'имя': 'Анна', 'возраст': 25} 📎

❄️ frozenset - неизменяемое множество, его нельзя менять после создания. Используется там, где нужен "жёсткий" набор данных. frozenset([1, 2, 3, 4]) ➡️ frozenset({1, 2, 3, 4})

🔼🔽 deque - двусторонняя очередь из модуля collections. Быстро добавлять и удалять элементы с обоих концов:
from collections import deque ⚙️ d = deque() - инициализировать элементами из любого итерируемого объекта (список, кортеж и т. д.).


Технологии телеграмма не стоят на месте, поэтому обращаю ваше внимание, что мы часто используем инструмент "цитата". Кликайте на цитату выше, чтобы открыть текст для чтения 👆

#⃣ Вся теория для ЕГЭ в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
3❤‍🔥3🔥1
🚩 Разбор номера 22271 #КЕГЭ по информатике #ЕГЭ5
Автор: О. Лысенков
Уровень: Средний


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

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

2. Далее эта запись обрабатывается по следующему правилу:

а) если восьмеричная запись начинается на 5, то все двойки в записи меняются на единицы, а все единицы меняются на двойки после к числу приписывается 11 слева;

б) если восьмеричная запись начинается не на 5, то к записи справа приписывается 10, а первый разряд полученной записи заменяется на 2.


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



👩‍💻 Код решения:
L = []
for n in range(1, 10000):
s = f'{n:o}' # s = oct(n)[2:]
if s[0] == '5':
s = s.replace('2', '*')
s = s.replace('1', '2')
s = s.replace('*', '1')
s = '11' + s
else:
s = s + '10'
s = '2' + s[1:] # а первый разряд полученной записи заменяется на 2.
r = int(s, 8)
if r < 1354:
L.append((r, n))
print(max(L))

Ответ: 61


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


1⃣ L = []
· Создаем пустой список для хранения пар (результат, исходное число)


2⃣ for n in range(1, 10000):
· Перебираем числа n от 1 до 9999


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


4⃣ if s[0] == '5':
· Проверяем, начинается ли восьмеричная запись с цифры 5


5⃣ s = s.replace('2', '*')
· Временно заменяем все цифры 2 на символ '*' (чтобы избежать конфликта при следующих заменах)


6⃣ s = s.replace('1', '2')
· Заменяем все цифры 1 на 2


7⃣ s = s.replace('*', '1')
· Заменяем временные символы '*' обратно на 1 (фактически меняем местами 1 и 2)


8⃣ s = '11' + s
· Добавляем в начало строки две единицы '11'


0⃣ else:
· Если восьмеричная запись НЕ начинается с 5


🔟 s = s + '10'
· Добавляем в конец строки '10'


1⃣1⃣ s = '2' + s[1:] # а первый разряд полученной записи заменяется на 2.
· Заменяем первую цифру полученной строки на 2


1⃣2⃣ r = int(s, 8)
· Преобразуем полученную строку s обратно в десятичное число, интерпретируя ее как восьмеричную


1⃣3⃣ if r < 1354:
· Проверяем, что результат r меньше 1354


1⃣4⃣ L.append((r, n))
· Добавляем в список пару (результат r, исходное число n)


1⃣5⃣ print(max(L))
· Находим и выводим максимальную пару в списке (сравнение происходит сначала по r, затем по n)



#⃣ Полный список разборов в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤‍🔥21🔥1