Информатика | Илья Андрианов | itpy 🧑‍💻
1.05K 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
Что выведет этот код? 🤔

1️⃣ [-3, -6, -9] 
2️⃣ [ ] 
3️⃣ [[1, 2, 3], [1, 2, 3], [1, 2, 3]] 

Информатика ЕГЭ | itpy 👨‍💻
Поддержать автора донатом 💵
853
Информатика | Илья Андрианов | itpy 🧑‍💻
Что выведет этот код? 🤔 1️⃣ [-3, -6, -9]  2️⃣ [ ]  3️⃣ [[1, 2, 3], [1, 2, 3], [1, 2, 3]]  Информатика ЕГЭ | itpy 👨‍💻 Поддержать автора донатом 💵
📱 Результатом этой программы будет пустой список.

Умножение списков на отрицательное число или на нуль равносильно удалению всех элементов списка 🤯
Please open Telegram to view this post
VIEW IN TELEGRAM
1254
This media is not supported in your browser
VIEW IN TELEGRAM
📱 Поиск делителей числа в Python: функция и примеры использования #tpy

В мире математики делители числа имеют важное значение, и в Python можно легко создать функцию, которая найдет все делители данного числа. Давайте рассмотрим функцию divisors(x):
def divisors(x):
div = []
for j in range(1, int(x ** 0.5) + 1):
if x % j == 0:
div += [j, x // j]
return sorted(set(div))



🔎 Как работает функция divisors(x)?

1⃣ Функция divisors(x) принимает один аргумент x, который является целым числом, для которого мы ищем делители.

2⃣ В цикле for от 1 до int(x ** 0.5) + 1 проходимся по всем числам от 1 до квадратного корня из x.

3⃣ Если число j является делителем x (то есть x % j == 0), то мы добавляем j и x // j в список делителей div, так как x // j это сомножитель числа j.

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


📝 Пример использования функции:

▪️Вызов divisors(24) вернет [1, 2, 3, 4, 6, 8, 12, 24], так как делители числа 24 - это все числа от 1 до 24, которые делят это число без остатка.

▪️Вызов divisors(16) вернет [1, 2, 4, 8, 16], поскольку делители числа 16 - это числа, которые можно поделить на 16, начиная с 1 и заканчивая самим 16.

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


🚩 Условие задачи:
Пусть М – сумма минимального и максимального натуральных делителей целого числа, не считая единицы и самого числа.

Напишите программу, которая перебирает целые числа, большие 700 000, в порядке возрастания и ищет среди них такие, для которых М оканчивается на 4.

В ответе запишите в первом столбце таблицы первые пять найденных чисел в порядке возрастания, а во втором столбце - соответствующие им значения М.


🚩 Теоретическая справка:
В данной задаче нас просят не учитывать единицы и само число, поэтому диапазон в for j in range(2, int(x ** 0.5) + 1): начинаем с 2.

Кстати про саму функцию divisors() уже был пост.


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


k = 0
for x in range(700_001, 10**10):
d = divisors(x)
if len(d) >= 2:
M = min(d) + max(d)
if abs(M) % 10 == 4:
print(x, M)
k += 1
if k == 5:
break

# Ответ:
# 700004 350004
# 700009 41194
# 700023 233344
# 700024 350014
# 700044 350024


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

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


2⃣ for x in range(700_001, 10**10):
Цикл перебора чисел от 700001 до 10**10.


3⃣ d = divisors(x)
Вызов функции divisors() для нахождения делителей числа x.


4⃣ if len(d) >= 2:
Проверка наличия как минимум двух делителей.


5⃣ M = min(d) + max(d)
Нахождение суммы минимального и максимального делителя числа x.


6⃣ if abs(M) % 10 == 4:
Проверка условия: остаток от деления абсолютной величины суммы делителей M на 10 равен 4.


7⃣ print(x, M)
Вывод числа x и суммы делителей M.


8⃣ k += 1
Увеличение счетчика найденных чисел.


0⃣ if k == 5:
Проверка, достигнут ли лимит в 5 найденных чисел.


🔟 break
Прерывание цикла после нахождения 5 чисел.


Информатика ЕГЭ | itpy 🧑‍💻
Поддержать автора донатом 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
1043
This media is not supported in your browser
VIEW IN TELEGRAM
📱 Импорт модулей в Python #tpy

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

При импорте модулей в Python вы можете использовать различные подходы, такие как:

1. Импорт всего модуля:
import module_name


2. Импорт конкретного объекта из модуля:
from module_name import object_name


3. Импорт модуля с псевдонимом:
import module_name as alias


Примеры использования импорта модулей:

# Импорт модуля math
import math
print(math.sqrt(16)) # Выведет 4.0

# Импорт функции randint из модуля random
from random import randint
print(randint(1, 10)) # Выведет случайное число от 1 до 10

# Импорт модуля datetime с псевдонимом dt
import datetime as dt
print(dt.datetime.now()) # Выведет текущую дату и время


Подробнее о импорте модулей в Python вы можете прочитать в данной статье на Notion, а также следите за интересными материалами в моём канале.

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

1️⃣ Произойдет ошибка 
2️⃣ 0,9
3️⃣ (0, 3, 0, 3, 0, 3)

Информатика ЕГЭ | itpy 👨‍💻
Поддержать автора донатом 💵
942
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 17528 #kege по информатике #ЕГЭ15
Автор: Основная волна 07.06.24
Уровень: Базовый


🚩 Условие задачи:
На числовой прямой даны два отрезка: P=[15;40] и Q=[21;63].
Укажите наименьшую возможную длину такого отрезка A, для которого логическое выражение (x∈P)→(((x∈Q)∧¬(x∈A))→¬(x∈P)) истинно (т.е. принимает значение 1) при любом значении переменной х.

👩‍💻 Код решения:
def F(x, a1, a2):
P = 15 <= x <= 40
Q = 21 <= x <= 63
A = a1 <= x <= a2
return P <= ((Q and (not A)) <= (not P))

R = []
M = [x / 4 for x in range(5 * 4, 80 * 4)]
for a1 in M:
for a2 in M:
if all(F(x, a1, a2) for x in M):
R.append(a2 - a1)
print(round(min(R)))

# Ответ: 19


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

1⃣ def F(x, a1, a2):
Определение функции F с параметрами x, a1 и a2.


2⃣ P = 15 <= x <= 40
Проверка условия нахождения x в интервале от 15 до 40.


3⃣ Q = 21 <= x <= 63
Проверка условия нахождения x в интервале от 21 до 63.


4⃣ A = a1 <= x <= a2
Проверка условия нахождения x в интервале между a1 и a2.


5⃣ return P <= ((Q and (not A)) <= (not P))
Возвращение результата выражения, описывающего взаимосвязь между P, Q, и A.


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


7⃣ M = [x / 4 for x in range(5 * 4, 80 * 4)]
Создание списка M с числами, равными x / 4, где x изменяется от 20 до 320 с шагом 1.


8⃣ for a1 in M:
Цикл перебора значений из списка M для переменной a1.


0⃣ for a2 in M:
Вложенный цикл перебора значений из списка M для переменной a2.


1⃣0⃣ if all(F(x, a1, a2) for x in M):
Проверка условия с помощью функции F для всех значений x из списка M.


1⃣1⃣ R.append(a2 - a1)
Добавление разности a2 - a1 в список R.


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


Информатика ЕГЭ | itpy 🧑‍💻
Поддержать автора донатом 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
964
This media is not supported in your browser
VIEW IN TELEGRAM
💡 Работа с файлами Python #tpy

Работа
с файлами в Python - это важный аспект программирования, позволяющий читать, записывать и обрабатывать данные в файлах.
В данной статье мы рассмотрим основные методы и приемы, которые помогут вам в ваших работах.

А в следующем посту рассмотрим несколько примеров открытия файлов с ЕГЭ.

🚩 Открытие файла:
file = open("example.txt", "r")  # Открываем файл example.txt на чтение


🚩 Чтение содержимого файла:
content = file.read()
print(content)


🚩 Построчное чтение файла:
file = open("example.txt", "r")  # Открытие файла для чтения

for line in file:
print(line.strip())

file.close()


🚩 Более подробную информацию про работу с файлами вы можете изучить в нашей статье на Notion

Информатика ЕГЭ | itpy 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
652
🚩 Разбор ДВ #2024 номера #8 по информатике #ЕГЭ8

👩‍💻 Код решения:
from itertools import *
alphabet = sorted('0123456789QWERTYUIOPASDFGHJKLZXCVBNM')
cnt = 0
for per in product(alphabet[:17], repeat=5):
w = ''.join(per)
if w[0] != '0':
if w.count('3') == 1:
if len([x for x in w if x > 'C']) <= 3:
cnt += 1
print(cnt)



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

👩‍💻 Код решения 1:
def G(n, b):
r = ''
while n > 0:
r = str(n % b) + r
n //= b
return r

R = []
for x in range(1, 2030+1):
num = 6**2030 + 6**100 - x
s = G(num, 6)
R.append([s.count('0'), x])

print(max(R))


👩‍💻 Код решения 2:
R = []
for x in range(1, 2030+1):
num = 6**2030 + 6**100 - x
s = ''
while num > 0:
s = str(num % 6) + s
num //= 6
R.append([s.count('0'), x])

print(max(R))


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

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


cnt = 0
for x in range(600_000+1, 10**10):
d = [j for j in divisors(x) if j % 10 == 7 and j != 7 and j != x]
if len(d) > 0:
print(x, min(d))
cnt += 1
if cnt == 5:
break


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

👩‍💻 Код решения:
a = 2  # – Стерео
b = 72000 # – Частота дискретизации
# c = ? – Битовое разрешение
t = 28 * 60 + 40 # – Общая длительность 17 треков

bit_all = 14_680_064 * 380
print(bit_all) # 5578424320 – бит

bit = bit_all - 17 * 308 * 2**13 # – Кбайт перевожу в бит (для 17 треков)

c = bit / (a * b * t)
print(c) # 22.34952...



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

👩‍💻 Код решения:
import sys
sys.setrecursionlimit(10000)

def F(n):
if n == 1:
return 1
if n > 1:
return (n - 1) * F(n - 1)

print((2*F(2024) - F(2023)) / F(2022))


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

👩‍💻 Код решения:
def F(a, b):
if a >= b:
return a == b
return F(a+1, b) + F(a+2, b) + F(a+3, b)

print(F(3, 9) * F(9, 13))


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

👩‍💻 Код решения:
M = [int(x) for x in open('17.txt')]
D = [x for x in M if x > 0]
R = []
for i in range(len(M)-1):
x, y = M[i], M[i+1]
if x < 0 or y < 0:
if x + y % min(D) == 0:
R.append(x + y)
print(len(R), max(R))


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

👩‍💻 Код решения:
cnt = 0
for s in open('9.csv'):
M = [int(x) for x in s.split(';')]
copied = [x for x in M if M.count(x) == 2]
not_copied = [x for x in M if M.count(x) == 1]
if len(copied) == 4 and len(not_copied) == 2:
if sum(copied) < sum(not_copied):
cnt += 1
print(cnt)



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

👩‍💻 Код решения:
def F(x, y):
return (x + y <= 26) or (y <= x - 4) or (y >= A)

for A in range(1000):
if all(F(x, y) for x in range(100) for y in range(100)):
print(A)


Информатика ЕГЭ | itpy 🧑‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
865
👩‍💻 Использования f-строк в python #tpy

Использование метода форматирования строк .format() в Python является широко распространенным способом работы со строками. Однако, с появлением f-строк (f-strings) в Python 3.6, разработчики получили удобный и современный способ форматирования строк.

f-строки позволяют встраивать значения переменных непосредственно в строку без необходимости использования метода .format(). Это делает код более читаемым, компактным и удобным для использования.

user = "Андрей"
action = "покупка"
log_message = f'Пользователь {user} зашел на сайт и выполнил действие: {action}'
print(log_message)
# Пользователь Андрей зашел на сайт и выполнил действие: покупка


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

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


🚩 Условие задачи:
Определите, какова сумма протяжённостей дорог из пункта F в пункт B и из пункта E в пункт D.


🚩 Теоретическая справка:
Данный код позволяет нам в универсальном случае определить последовательность вершин графа. И если знаем вершины, то не сложно найти длины и сумму длин!


👩‍💻 Код решения:
from itertools import permutations

table = '12 15 16 21 23 24 32 36 37 42 47 51 56 61 63 65 73 74'
graph = 'AB BA AF FA FB BF FE EF BD DB ED DE EC CE DG GD CG GC'

for per in permutations('ABCDEFG'):
new_table = table
for i in range(1, 7+1):
new_table = new_table.replace(str(i), per[i-1])
if set(new_table.split()) == set(graph.split()):
print('1 2 3 4 5 6 7')
print(*per)


👩‍💻 Результат:
# 1 2 3 4 5 6 7
# B D E G A F C

# FB = 53, ED = 2, => 55

# 1 2 3 4 5 6 7
# F E D C A B G

# ED = 53, FB = 2, => 55


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

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


2⃣ table = '12 15 16 21 23 24 32 36 37 42 47 51 56 61 63 65 73 74'
Определяем строку 'table', представляющую набор чисел, разделенных пробелами, которые описывают соединения в графе.


3⃣ graph = 'AB BA AF FA FB BF FE EF BD DB ED DE EC CE DG GD CG GC'
Определяем строку 'graph', которая описывает возможные связи между буквами A, B, C, D, E, F, G в графе.


4⃣ for per in permutations('ABCDEFG'):
Запускаем цикл, перебирающий все возможные перестановки букв A, B, C, D, E, F, G.


5⃣ new_table = table
Создаем копию строки 'table', чтобы постепенно заменять числа на соответствующие буквы из текущей перестановки.


6⃣ for i in range(1, 7 + 1):
Запускаем вложенный цикл, который проходит по всем числам от 1 до 7.


7⃣ new_table = new_table.replace(str(i), per[i - 1])
Заменяем каждое число в 'new_table' на соответствующую букву из текущей перестановки 'per', используя индексы.


8⃣ if set(new_table.split()) == set(graph.split()):
Проверяем, совпадает ли множество уникальных элементов в 'new_table' с множеством уникальных элементов в 'graph'.


0⃣ print('1 2 3 4 5 6 7')
Если множества совпадают, выводим строку '1 2 3 4 5 6 7', что означает, что найдено подходящее соответствие.


🔟 print(*per)
Печатаем текущее соответствие букв из перестановки, используя распаковку для форматированного вывода.


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

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