Информатика | Илья Андрианов | 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
🚩🚩 Разбор номера 19254 #kege по информатике #ЕГЭ24
Автор: ЕГКР
Уровень: Базовый


🚩 Условие задачи:
Текстовый файл состоит из символов F, G, Q, R, S и W. Определите в прилагаемом файле максимальное количество идущих подряд символов, среди которых подстрока FSRQ встречается ровно 80 раз.


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


👩‍💻 Код решения:
s = open('0. files/24.txt').readline()
s = s.split('FSRQ')
maxi = 0
for i in range(len(s)-80):
r = 'SRQ' + 'FSRQ'.join(s[i:i+81]) + 'FSR'
maxi = max(maxi, len(r))
print(maxi)

Ответ: 2379


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

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


2⃣ s = s.split('FSRQ')
Разбиваем строку s на список подстрок, используя разделитель 'FSRQ'


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


4⃣ for i in range(len(s)-80):
Запускаем цикл по индексам списка s, оставляя запас в 80 элементов для обработки последующих 81 элементов


5⃣ r = 'SRQ' + 'FSRQ'.join(s[i:i+81]) + 'FSR'
Формируем строку r, соединяя 81 подстроку из списка s с разделителем 'FSRQ', добавляя префикс 'SRQ' и суффикс 'FSR'


6⃣ maxi = max(maxi, len(r))
Обновляем maxi, если длина строки r больше текущего значения maxi


7⃣ print(maxi)
Выводим максимальную найденную длину строки r


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥52🔥2
Апробация_14_05_2025.zip
24.9 MB
В группе ВК «kompege» опубликовали ZIP-архив с двумя вариантами из вчерашней апробации. Думаю, кому-нибудь будет полезно посмотреть #useful
👍9❤‍🔥4🔥4
🚩 Разбор номера 15413 #kege по информатике #ЕГЭ8
Автор: А.Вдовин
Уровень:
Средней

🚩 Условие задачи:
Найдите количество четырехзначных чисел в девятеричной системе счисления, в которых есть ровна одна цифра 8, а сумма цифр слева от нее равна сумме цифр справа от нее.

Примечание: если слева или справа от 8 цифр нет, то сумма считается равной нулю


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


👩‍💻 Код решения:
from itertools import *
cnt = 0
for p in product('012345678', repeat=4):
num = ''.join(p)
if num[0] != '0':
if num.count('8') == 1:
i = num.index('8')
summa_left = sum(map(int, num[:i]))
summa_right = sum(map(int, num[i+1:]))
if summa_left == summa_right:
cnt += 1
print(cnt)

Ответ: 64


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

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


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


3⃣ for p in product('012345678', repeat=4):
Цикл по всем возможным комбинациям длиной 4 из цифр '012345678' (включая повторы)


4⃣ num = ''.join(p)
Преобразование текущей комбинации p в строку num


5⃣ if num[0] != '0':
Проверка, что число не начинается с нуля (чтобы избежать ведущих нулей)


6⃣ if num.count('8') == 1:
Проверка, что в числе ровно одна цифра '8'


7⃣ i = num.index('8')
Нахождение индекса цифры '8' в строке num


8⃣ summa_left = sum(map(int, num[:i]))
Вычисление суммы цифр слева от '8' (преобразование среза строки в числа и их суммирование)


0⃣ summa_right = sum(map(int, num[i+1:]))
Вычисление суммы цифр справа от '8'


🔟 if summa_left == summa_right:
Проверка равенства сумм слева и справа от '8'


1⃣1⃣ cnt += 1
Увеличение счётчика, если условие выполнено


1⃣2⃣ print(cnt)
Вывод итогового количества подходящих чисел


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍53❤‍🔥3
🤯 До ЕГЭ по физике меньше месяца — ЧТО ДЕЛАТЬ?

Специально для вас от Эдуардакраткие и понятные конспекты по большинству важнейших тем физики, которые помогут быстро повторить главное

Для удобства конспекты распределены по разделам:

1. МЕХАНИКА 🪨
Равноускоренное движение
Импульс. Закон изменения и сохранения
Механические колебания и волны

2. МКТ и ТЕРМОДИНАМИКА 🌡️
МКТ и газовые законы
КПД. Тепловая машина
Влажность

3. ЭЛЕКТРОДИНАМИКА 🧲
Электростатика
— Электрический ток
Конденсатор
Катушка индуктивности
Электромагнитная индукция
Колебательный контур

4. ОПТИКА 🌈
Основные понятия и законы геометрической оптики
Линзы
Волновая оптика

5. КВАНТОВАЯ ФИЗИКА
Фотоны. Фотоэффект
Ядерные реакции и радиоактивный распад

⚡️Больше контента в канале «Физика с Эдуардом | ЕГЭ по физике»
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥6❤‍🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
8⃣ Шпаргалка ЕГЭ | Задание #ЕГЭ8 #шпора

📌 Ссылка на шпаргалку/методичку на Notion и несколько полезных моментов уже здесь:

Подготовили для вас методическое пособие по решению 8 номера! Сохраняйте все, что понадобится на экзамене 😼

🚩 for s in itertools.permutations('ЯРОСЛАВ', 5):
Цикл for, который проходит через все перестановки длиной 5 букв из заданной строки 'ЯРОСЛАВ'. Каждая перестановка сохраняется в переменной s.


🚩 for s in itertools.product('АЕКНС', repeat=6):
Цикл for, в котором происходит итерация по всем комбинациям символов из 'АЕКНС' длиной 6 символов, сгенерированным с помощью метода product из модуля itertools.


🚩 slovo = ''.join(s)
Преобразования кортежа символов "s" в строку символов "slovo".


🚩 if slovo[0] not in '1357':
Проверка условия, что элемент слова по индексу "0" является одним из символов набора.


🚩 if all(pair not in num for pair in '71 17 37 73 57 75 77'.split()):
Функция all() позволяет проверять множественные вхождения элементов в строку. В данном случаи ни одно из чисел "71 17 37 73 57 75 77" не должно попадаться в строку num.

В комментариях закреплю файл в формате pdf 👇

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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥7🔥5👍4
🚩 Разбор номера из нового варианта #statgrad по информатике #ЕГЭ8
Автор: Статград
Уровень: Базовый


🚩 Условие задачи:
Все десятибуквенные коды, составленные из букв, входящих в слово
СКАНЕР, расположены в алфавитном порядке и пронумерованы.

Определите количество кодов, для которых одновременно выполнены условия:
1) номер кода в списке делится на 3;
2) первая буква кода – согласная;
3) код содержит ровно одну букву Р.

Кликни, чтобы развернуть полностью 👆


👩‍💻 Код решения:
from itertools import product
num = 0
cnt = 0
for s in product(sorted('СКАНЕР'), repeat=10):
word = ''.join(s)
num += 1
if num % 3 == 0:
if word[0] in 'СКНР':
if word.count('Р') == 1:
cnt += 1
print(cnt)

Ответ: 4531250


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

1⃣ from itertools import product
Импорт функции product из модуля itertools, которая создает все возможные комбинации длиной n из указанных элементов.


2⃣ num = 0
Инициализация переменной num для отслеживания общего количества рассмотренных комбинаций.


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


4⃣ for s in product(sorted('СКАНЕР'), repeat=10):
Цикл for, в котором перебираются все возможные комбинации длиной 10 символов из отсортированных букв 'СКАНЕР'.


5⃣ word = ''.join(s)
Объединение символов из текущей комбинации в одно слово для дальнейшей проверки.


6⃣ num += 1
Увеличение счетчика num на 1 для отслеживания количества рассмотренных комбинаций.


7⃣ if num % 3 == 0:
Проверка, что номер рассматриваемой комбинации делится на 3 без остатка.


8⃣ if word[0] in 'СКНР':
Проверка, содержит ли первая буква слова 'С', 'К', 'Н' или 'Р'.


0⃣ if word.count('Р') == 1:
Проверка, что буква 'Р' встречается в слове ровно 1 раз.


1⃣0⃣ cnt += 1
Увеличение счетчика cnt на 1, если текущая комбинация удовлетворяет всем условиям.


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


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥8🔥551
🚩 Разбор номера 7029 #kege по информатике #ЕГЭ8
Автор: А.Богданов
Уровень: Базовый


🚩 Условие задачи:
Марина собирает восьмибуквенные слова из букв своего имени. Все буквы могут многократно повторяться. На каком месте окажется имя МАРИАННА в отсортированном по алфавиту списке сгенерированных слов? Нумерация начинается с 1.


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


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

for n, p in enumerate(product(sorted('МАРИН'), repeat=8), 1):
word = ''.join(p)
if word == 'МАРИАННА':
print(n)
break

Ответ: 169466


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

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


2⃣ for n, p in enumerate(product(sorted('МАРИН'), repeat=8), 1):
Запуск цикла, где:

• sorted('МАРИН') сортирует символы строки 'МАРИН' в алфавитном порядке (['А', 'И', 'М', 'Н', 'Р'])

• product(..., repeat=8) генерирует все возможные комбинации длины 8 из этих символов

• enumerate(..., 1) нумерует каждую комбинацию, начиная с 1

• n хранит номер текущей комбинации, p — саму комбинацию в виде кортежа символов


3⃣ word = ''.join(p)
Преобразует кортеж символов p в строку word


4⃣ if word == 'МАРИАННА':
Проверяет, совпадает ли текущая комбинация word с искомым словом 'МАРИАННА'


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


6⃣ break
Прерывает цикл после нахождения нужного слова


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
4❤‍🔥9👍44
👩‍💻 Несколько способов как найти значение суммы числовых значений цифр в строке #tpy

Это строка, содержащая числовые символы, из которых мы будем находить сумму:
s = '12345'



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

В этом варианте мы используем цикл for, чтобы пройти по каждому символу строки s. Каждый символ преобразуем в число с помощью int(x) и добавляем его к общей сумме summa1.


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

Здесь мы использовали метод count для подсчета количества вхождений каждой цифры от 0 до 9 в строке s. Умножаем количество вхождений на само число и добавляем к summa2.


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

Этот способ применяет функцию map, чтобы преобразовать каждый символ строки s в число. Используя sum, мы находим сумму всех чисел. Это краткий и эффективный способ.


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

Здесь используется генератор списка для создания нового списка, где каждый элемент — это числовое значение символа из s. Затем с помощью sum находим сумму элементов списка.

Альтернативно, в этой версии можно добавить проверку if, чтобы убедиться, что символы являются цифрами:
summa4 = sum([int(x) for x in s if x.isdigit()])

Это делает код более безопасным на случай, если в строке s присутствуют нечисловые символы.


⤵️ Поделитесь этим постом с друзьями, чтобы все узнали о этих простых способах подсчета суммы чисел в строке💪💪

#⃣ Вся теория для ЕГЭ в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
4❤‍🔥94🤯3
1⃣6⃣ Шпаргалка для номера #ЕГЭ16 #шпора

Собрал для вас основные моменты, которые важно знать при решении 16 номера. Для закрепления материала оставляю ссылку на подборку всех 16 номеров разобранных на моем канале.

📚 По этой ссылке ты найдешь мои шпаргалки по всем остальным номерам ЕГЭ


🚩🚩 Разбор номера 21902 #kege по информатике #ЕГЭ16
Автор: Открытый вариант 2025
Уровень: Базовый

def F(n):
if n >= 2025:
return n
if n < 2025:
return n * 2 + F(n + 2)

print(F(82) - F(81)) # 1945




🚩🚩 Разбор номера 21415 #kege по информатике #ЕГЭ16
Автор: Досрочная волна 2025
Уровень: Базовый

import sys
sys.setrecursionlimit(100000)

def F(n):
if n <= 5:
return 1
if n > 5:
return n + F(n - 2)

print(F(2126) - F(2122))

В этом прототипе нужно расширить глубину рекурсии из-за ошибки: "RecursionError: maximum recursion depth exceeded".



🚩🚩 Разбор номера 20906 #kege по информатике #ЕГЭ16
Автор: Апробация 05.03.25
Уровень: Базовый

import sys
sys.setrecursionlimit(100000)

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

print((F(2024) // 4 + F(2023)) // F(2022))

print((F(2024) / 4 + F(2023)) // F(2022))
~~~^~~
OverflowError: integer division result too large for a float

Такую ошибку мы получили на экзамене 2024 года.



🚩🚩 Разбор номера 18931 #kege по информатике #ЕГЭ16
Автор: М. Попков
Уровень: Базовый

from functools import *
import sys
sys.setrecursionlimit(100000)

@lru_cache(None)
def F(n):
if n <= 3:
return n - 1
if n > 3 and n % 2 == 0:
return F(n - 2) + n / 2 - F(n - 4)
if n > 3 and n % 2 != 0:
return F(n - 1) * n + F(n - 2)


for n in range(1, 5000):
F(n)

print(F(4952) + 2 * F(4958) + F(4964))

Самая неприятная ошибка, здесь необходимо использовать библиотеку functools.


📌 Тут оставлю сылку на старую версию шпаргалки, которую делал в Notion


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥1810❤‍🔥82
Думаю надо быстро освежить шпаргалки и ответить на ваши вопросы. Делаем? И не забудьте поставить реакцию на прошлый пост!
Anonymous Poll
82%
Ехала ✔️
14%
Надо надо ❗️
4%
Not now
10❤‍🔥7🔥6
5⃣ Шпаргалка для номера #ЕГЭ5 #шпора

Собрал для вас основные моменты, которые важно знать при решении 5 номера. Для закрепления материала оставляю ссылку на подборку всех 5 номеров разобранных на моем канале.

📚 По этой ссылке ты найдешь мои шпаргалки по всем остальным номерам ЕГЭ


🚩 Разбор номера 21404 #kege по информатике #ЕГЭ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



🚩 Разбор номера 21700 #kege по информатике #ЕГЭ5
Автор: ЕГКР 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

В этом типе нужно использовать функцию для перевода в троичную систему счисления.


🚩 Встроенные функции перевода в 2, 8, 16-ю системы счисления:
n = 24
num_2 = bin(n)[2:] # 11000
num_8 = oct(n)[2:] # 30
num_16 = hex(n)[2:] # 18


🚩 Перевод в 2, 8, 16-ю системы счисления через f-строки:
n = 24
num_2 = f'{n:b}' # 11000
num_8 = f'{n:o}' # 30
num_16 = f'{n:x}' # 18


🚩 Универсальная функция перевода (2 <= base <=36)
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


🚩 Функция перевода из base системы в 10-ю
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 реакций, после этого заливаю следующую (свежую) шпору 👋

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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
5168👍74
8⃣ Шпаргалка для номера #ЕГЭ8 #шпора

Собрал для вас основные моменты, которые важно знать при решении 8 номера. Для закрепления материала оставляю ссылку на подборку всех 8 номеров разобранных на моем канале.

📚 По этой ссылке ты найдешь мои шпаргалки по всем остальным номерам ЕГЭ


🚩 Разбор номера 21407 #kege по информатике #ЕГЭ8
Автор: Досрочная волна 2025
Уровень: Базовый

from itertools import *

k = 0
for i in product('ДГИАШЭ', repeat=5):
i = ''.join(i)
if i[0] not in 'ИАЭ' and i[-1] not in 'ДГШ':
k += 1
print(k)

В данном задании необходимо найти какое количество различных кодовых слов можно составить.


🚩 Разбор номера 21894 #kege по информатике #ЕГЭ8
Автор: Открытый вариант 2025
Уровень: Базовый

from itertools import *

k = 0
for i in permutations('0123456789', 4):
i = ''.join(i)
if i[0] != '0':
i = i.replace('0', '2').replace('4', '2').replace('6', '2').replace('8', '2')
i = i.replace('3', '1').replace('5', '1').replace('7', '1').replace('9', '1')
if '11' not in i and '22' not in i:
k += 1
print(k)

В данном прототипе нужно найти количество чисел, которые можно составить.


🚩 Разбор номера 21703 #kege по информатике #ЕГЭ8
Автор: ЕГКР 19.04.25
Уровень: Базовый

from itertools import *

number = 0
for i in product(sorted('ПОБЕДА'), repeat=6):
i = ''.join(i)
number += 1
if i[0] == 'О' and len(i) == len(set(i)):
if number % 2 == 0:
print(number)

Здесь нужно учесть исходный список слов и вывести номер подходящего слова.

📌 Тут оставлю сылку на старую версию шпаргалки, которую делал в Notion



✔️ Супер! 30 реакций собрали, тогда на этом посте собираем 35 и идем дальше?)


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
7❤‍🔥2611🔥822
Ребят, еще несколько реакций на последний пост и заливаю шпору по 12 номеру ☝️

Ночью дропну плотный разбор 27 аналитического решения.
1⃣2⃣Шпаргалка для номера #ЕГЭ12 #шпора

Для закрепления материала оставляю ссылку на подборку всех 12 номеров разобранных на моем канале.

📚 По этой ссылке ты найдешь мои шпаргалки по всем остальным номерам ЕГЭ


🚩🚩 Разбор номера 20901 #kege по информатике #ЕГЭ12
Автор: Апробация 05.03.25
Уровень: Базовый

s = '1' + 90 * '0'
while '1' in s:
if '10' in s:
s = s.replace('10', '0001', 1)
else:
s = s.replace('1', '000', 1)
print(s.count('0'))

В данном задании необходимо найти количество нулей в полученной строке.


🚩🚩 Разбор номера 20958 #kege по информатике #ЕГЭ12
Уровень: Базовый

M = []
for n in range(4, 10000):
s = '4' + n * '7'
while '444' in s or '777' in s:
if '777' in s:
s = s.replace('777', '4', 1)
else:
s = s.replace('444', '7', 1)
summ = s.count('4') * 4 + s.count('7') * 7
M.append(summ)
print(max(M))

В этом прототипе нужно найти максимальную сумму цифр в строке.


🚩 Оставляю короткую заметку по поиску суммы цифр в строке:
s = '12345'

summ = s.count('4') * 4 + s.count('7') * 7

summ = sum(map(int, s))

summ = sum([int(x) for x in s])

summ = sum([int(x) for x in s if x.isdigit()])

summ = 0
for x in s:
summ += int(x)

💪 Более подробный пост на эту тему публиковал выше 🔝

📌 Тут оставлю сылку на старую версию шпаргалки, которую делал в Notion


По традиции набираем 35+ реакций и вечером заливаю ряд постов про 27 номер!


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
10❤‍🔥10👍44🔥21
This media is not supported in your browser
VIEW IN TELEGRAM
Почему на экзамене ЕГЭ вас просят сохранять все ваши файлики в одну папку 🗂 #view

📱 Смотреть в TikTok

📱 Смотреть в YouTube

📱 Смотреть в Instagram

📺 Все мои видео в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤‍🔥7🔥5👨‍💻5👍21
2⃣7⃣ Разбор / Шпаргалка номера #ЕГЭ27
Задача 21425
#kege по информатике #шпора
Автор: Досрочная волна 2025
Уровень: Базовый


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

❗️Продолжение разбора 27 номера будет в нескольких постах ниже.

🚩 Условие задачи:
В файле A хранятся данные о звёздах двух кластеров. В файле B хранятся данные о звёздах трёх кластеров.

Для каждого файла определите координаты центра каждого кластера. Затем вычислите четыре числа:
1. PxA – среднее арифметическое абсцисс центров кластеров файла А.
2. PyA – среднее арифметическое ординат центров кластеров файла А.

3. PxB – среднее арифметическое абсцисс центров кластеров файла B.
4. PyB – среднее арифметическое ординат центров кластеров файла B.


В ответе запишите четыре числа: в первой строке сначала целую часть произведения PxA * 10000, затем целую часть произведения Py*10000 для файла А, во второй строке – аналогичные данные для файла B.


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

А расстояние между двумя точками на плоскости между точками A(x1, y1) и B(x2, y2) вычисляется по формуле: d(A,B)= ((x2 - x1)**2 + (y2 - y1)**2)**0.5



👩‍💻 Код решения:
from math import dist
clustersA = [[], []]
clustersB = [[], [], []]

for s in open('27_A.txt'):
s = s.replace(',', '.')
x, y = [float(i) for i in s.split()]
if y > 0:
clustersA[0].append([x, y])
else:
clustersA[1].append([x, y])


for s in open('27_B.txt'):
s = s.replace(',', '.')
x, y = [float(i) for i in s.split()]
if x > 0 and y > 0:
clustersB[0].append([x, y])
elif x > 0 and y < 0:
clustersB[1].append([x, y])
else:
clustersB[2].append([x, y])


def center(cl):
R = []
for p in cl:
summa=sum(dist(p, g) for g in cl)
R.append([summa,p])
return min(R)[1]


centersA = [center(cl) for cl in clustersA]
pxA = sum(x for x, y in centersA) / 2 * 10000
pyA = sum(y for x, y in centersA) / 2 * 10000
print(int(pxA), int(pyA))

centersB = [center(cl) for cl in clustersB]
pxB = sum(x for x, y in centersB) / 3 * 10000
pyB = sum(y for x, y in centersB) / 3 * 10000
print(int(pxB), int(pyB))

Ответ:
167990 73043
122627 29105

Файлы для решения задачи:
27_A.xlsx 27_A.txt
27_B.xlsx 27_B.txt


#⃣ Полный список разборов в одном месте
#⃣ Шпаргалки по всем остальным номерам ЕГЭ

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥104🔥4🤯2
Товарищи, что по реакциям, я для кого стараюсь? 🥲

⤵️ Продолжение шпаргалки по #ЕГЭ27 #useful

Первое, что необходимо сделать в этой задаче — открыть файл в Excel и, следуя инструкции на картинке, построить точечную диаграмму. С её помощью мы определим, в какой из кластеров попадает каждая точка из файла 27_B.txt.

Затем переходим к распределению этих точек в коде (обращаю внимание, что в этом примере я рассматриваю только файл B, так как он более нагляден).


👩‍💻 Код программы:
clustersB = [[], [], []]

for s in open('27_B.txt'):
s = s.replace(',', '.')
x, y = [float(i) for i in s.split()]
if x > 0 and y > 0:
clustersB[0].append([x, y])
elif x > 0 and y < 0:
clustersB[1].append([x, y])
else:
clustersB[2].append([x, y])



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

1⃣ clustersB = [[], [], []]
• Создаем список из трех пустых подсписков для хранения точек трех кластеров
- clustersB[0] - первый кластер (первая четверть)
- clustersB[1] - второй кластер (четвертая четверть)
- clustersB[2] - третий кластер (вторая и третья четверти вместе)


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


3⃣ s = s.replace(',', '.')
Заменяем запятые на точки для корректного преобразования в float


4⃣ x, y = [float(i) for i in s.split()]
Разбиваем строку по пробелам и преобразуем части в числа с плавающей точкой
x - первая координата (абсцисса)
y - вторая координата (ордината)


5⃣ if x > 0 and y > 0:
Распределяем точку в один из кластеров в зависимости от координат:


6⃣ clustersB[0].append([x, y])
Если обе координаты положительные - точка в первой четверти (кластер 0)


7⃣ elif x > 0 and y < 0:
Если x положительный, а y отрицательный - точка в четвертой четверти (кластер 1)

8⃣ clustersB[1].append([x, y])


0⃣ else:
Все остальные точки (вторая и третья четверти) попадают в кластер 2


🔟 clustersB[2].append([x, y])
Сюда попадают случаи:
x < 0 и y > 0 (вторая четверть)
x < 0 и y < 0 (третья четверть)
x > 0 и y = 0 (на оси X)
x < 0 и y = 0 (на оси X)
x = 0 (на оси Y, независимо от y)


#⃣ Полный список разборов в одном месте
#⃣ Шпаргалки по всем остальным номерам ЕГЭ

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
15218👍7❤‍🔥3🤔1