Ребят, еще несколько реакций на последний пост и заливаю шпору по 12 номеру ☝️
Ночью дропну плотный разбор 27 аналитического решения.
Ночью дропну плотный разбор 27 аналитического решения.
Для закрепления материала оставляю ссылку на подборку всех 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'))
В данном задании необходимо найти количество нулей в полученной строке.
Уровень: Базовый
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
Please open Telegram to view this post
VIEW IN TELEGRAM
10❤🔥10👍4 4🔥2 1
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👍2❤1
Задача 21425 #kege по информатике #шпора
Автор: Досрочная волна 2025
Уровень: Базовый
PS: Для начала просто внимательно прочитайте условие задачи и сравните его с оригиналом! Также публикую код решения, но пока без комментариев - они будут добавлены постами ниже.
В файле 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
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥10❤4🔥4🤯2
Товарищи, что по реакциям, я для кого стараюсь? 🥲
⤵️ Продолжение шпаргалки по #ЕГЭ27 #useful
Первое, что необходимо сделать в этой задаче — открыть файл в Excel и, следуя инструкции на картинке, построить точечную диаграмму. С её помощью мы определим, в какой из кластеров попадает каждая точка из файла 27_B.txt.
Затем переходим к распределению этих точек в коде (обращаю внимание, что в этом примере я рассматриваю только файл B, так как он более нагляден).
👩💻 Код программы:
👩💻 Комментарии к коду:
1⃣
2⃣
3⃣
4⃣
5⃣
6⃣
7⃣
8⃣
0⃣
🔟
#⃣ Полный список разборов в одном месте
#⃣ Шпаргалки по всем остальным номерам ЕГЭ
➡ Информатика ЕГЭ | чатик itpy 🧑💻
Первое, что необходимо сделать в этой задаче — открыть файл в 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])
clustersB = [[], [], []]
• Создаем список из трех пустых подсписков для хранения точек трех кластеров
- clustersB[0] - первый кластер (первая четверть)
- clustersB[1] - второй кластер (четвертая четверть)
- clustersB[2] - третий кластер (вторая и третья четверти вместе)
for s in open('27_B.txt'):
Открываем файл '27_B.txt' для чтения и построчно обрабатываем его содержимое
s = s.replace(',', '.')
Заменяем запятые на точки для корректного преобразования в float
x, y = [float(i) for i in s.split()]
Разбиваем строку по пробелам и преобразуем части в числа с плавающей точкой
x - первая координата (абсцисса)
y - вторая координата (ордината)
if x > 0 and y > 0:
Распределяем точку в один из кластеров в зависимости от координат:
clustersB[0].append([x, y])
Если обе координаты положительные - точка в первой четверти (кластер 0)
elif x > 0 and y < 0:
Если x положительный, а y отрицательный - точка в четвертой четверти (кластер 1)
clustersB[1].append([x, y])
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)
Please open Telegram to view this post
VIEW IN TELEGRAM
15❤21 8👍7❤🔥3🤔1
Далее нам необходимо написать функцию для поиска центра кластера. Но прежде чем перейти к ней, реализуем вспомогательную функцию для вычисления расстояния между двумя точками.
Расстояние между двумя точками на плоскости между точками A(x1, y1) и B(x2, y2) вычисляется по формуле: d(A,B)= ((x2 - x1)**2 + (y2 - y1)**2)**0.5
Что можно описать функцией:
def d(A, B):
x1, y1 = A
x2, y2 = B
return ((x2 - x1)**2 + (y2 - y1)**2)**0.5
print(d([0, 0], [3, 4])) # 5.0
Но так же надо заметить, что эта функция уже описана в питоне, а именно в библиотеке math.
Тот же самый код, но короче через math:
from math import dist
print(dist([0, 0], [3, 4]))
Please open Telegram to view this post
VIEW IN TELEGRAM
5❤🔥8❤6🔥3
Теперь разберём функцию для поиска центра кластера. Для примера возьмём кластер:
[[0, 0], [4, 3], [2, 2], [5, 6]]
Напомню, что центром кластера называется точка, для которой сумма расстояний до всех остальных точек кластера минимальна.
Алгоритм следующий:
- Берём произвольную точку p из кластера.
- Вычисляем сумму расстояний от p до всех других точек g этого кластера.
- Повторяем для всех точек и выбираем ту, у которой сумма минимальна.
from math import dist
def center(cl):
R = []
for p in cl:
summa = 0
for g in cl:
summa += dist(p, g)
R.append([summa,p])
return min(R)[1]
clustersA = [[[0, 0], [4, 3], [2, 2], [5, 6]], []]
cl = clustersA[0]
print(center(cl)) # [2, 2] - центр первого кластера из двух
Суммы для всех точек:
15.638676800652844 [0, 0]
10.39834563766817 [4, 3]
10.06449510224598 [2, 2]
15.972527336075034 [5, 6]
from math import dist
Импорт функции для вычисления евклидова расстояния между точками.
def center(cl):
Функция, которая находит "центр" кластера (точку с минимальной суммой расстояний до остальных).
R = []
Список для сохранения результатов.
for p in cl:
Первый цикл – перебирает каждую точку кластера.
summa = 0
Обнуление суммы расстояний для текущей точки p.
for g in cl:
Вложенный цикл – вычисляет расстояние от p до всех точек g в кластере.
summa += dist(p, g)
Накопление суммы расстояний для каждой точки p
R.append([summa, p])
Cохранение суммы и точки p в список R.
return min(R)[1]
Поиск точки с минимальной суммой расстояний (центр).
clustersA = [[[0, 0], [4, 3], [2, 2], [5, 6]], []]
Тестовые данные: список из двух кластеров (второй пуст).
cl = clustersA[0]
Выбор первого кластера для обработки.
print(center(cl))
Вывод результата работы функции.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥7❤6👍2
Кульминация решения (опять же на примере кластеров из файла B) - поиск центров кластеров и вычисление среднего арифметическое абсцисс центров кластеров файла B и среднего арифметическое ординат центров кластеров файла B.
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))
centersB = [center(cl) for cl in clustersB]
Находим центры каждого кластера из списка clustersB
pxB = sum(x for x, y in centersB) / 3 * 10000
Вычисляем среднюю x-координату центров кластеров, умножаем на 10000 и делим на 3 (масштабирование)
pyB = sum(y for x, y in centersB) / 3 * 10000
Вычисляем среднюю y-координату центров кластеров, умножаем на 10000 и делим на 3 (масштабирование)
print(int(pxB), int(pyB))
Выводим результат в виде целых чисел
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8❤🔥4👍3
Ребят, если найдёте интересные задачки с ДВ — кидайте их мне в лс @ilandroxxy или в анонимные сообщения канала (новая функция в Телеграме, можно отправить по кнопке с картинкой). Всем завтра удачи! Ни пуха ни пера! 💪 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤6❤🔥5
На предприятии каждой изготовленной детали присваивают серийный номер, состоящий из 246 символов. В базе данных для хранения каждого серийного номера отведено одинаковое и минимально возможное число байт.
Известно, что для хранения 703_569 серийных номеров доступно не более 77 Мбайт памяти.
Определите максимально возможную мощность алфавита, используемого для записи серийных номеров.
sym = 246
byte = 77 * 2 ** 20 / 703_569
# не более 77 Мбайт - поэтому округляем вниз
print(byte) # 114.758 -> 114
bit = 114 * 8
# не более 77 Мбайт - поэтому округляем вниз
print(bit / sym) # 3.707 -> 3
# Максимальная мощность:
print(2 ** 3) # 8
# Ответ: 8
На предприятии каждой изготовленной детали присваивают серийный номер, состоящий из 3410 символов. В базе данных для хранения каждого серийного номера отведено одинаковое и минимально возможное число байт.
Известно, что для хранения 2984523 серийных номеров доступно не менее 14 Мбайт памяти.
Определите минимально возможную мощность алфавита, используемого для записи серийных номеров.
from math import *
for k in range(1, 10000):
bit = ceil(log2(kod))
byte = ceil(3410 * bit / 8)
if 2_984_523 * byte >= 14 * 1024 * 1024:
print(kod)
break
# Ответ: 2
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🔥6👍4
В каждой строке шесть натуральных чисел. Определите среднее арифметическое чисел всех строк таблицы, для которых выполнены оба условия:
- в строке есть число, которое повторяется трижды, остальные три числа различны;
- повторяющееся число строки меньше, чем удвоенное минимальное из ее неповторяющихся чисел.
A = []
for s in open('9.csv'):
M = [int(x) for x in s.split(';')]
p3 = [i for i in M if M.count(i) == 3]
np = [i for i in M if M.count(i) == 1]
if len(p3) == 3 and len(np) == 3:
if p3[0] < 2 * min(np):
A.append(sum(M))
print(sum(A) // len(A))
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤7👍5
Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств.
Сеть задана ІР-адресом одного из входящих в неё узлов 97.191.34.206 и сетевой маской 255.255.255.240. Определите наибольший IP-адрес данной сети, который может быть присвоен компьютеру.
from ipaddress import *
net = ip_network('97.191.34.206/255.255.255.240', 0)
for ip in net:
print(ip) # 97.191.34.206
# 97.191.34.207 - не учитываем так как широковещательный
#Ответ: 9719134206
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥10👍7🫡4
Даны 9 буквы слова КОМПЬЮТЕР в алфавитном порядке и нужно найти код с нечетным номером, который не начинается на гласные буквы и содержит одну букву К.
from itertools import *
n = 0
for p in product(sorted('КОМПЬЮТЕР'), repeat=6):
n += 1
word = ''.join(p)
if word[0] not in 'ОЮЕ':
if word.count('К') == 1:
if n % 2 != 0:
print(n)
# Ответ: 472385
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥8👍6🔥5
На вход алгоритма подаётся натуральное число N.
Алгоритм строит по нему новое число R следующим образом.
1. Строится троичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если число N делится на 3, то к этой записи дописывается справа две последние цифры троичной записи;
б) если число N не делится на 3, то остаток от деления умножается на 5, переводится в троичную запись и дописывается в конец числа.
3. Результат переводится в десятичную систему и выводится на экран.
Укажите наименьшее число N, после обработки которого с помощью этого алгоритма получается число R, не меньшее чем 290.
def tri(n):
s = ''
while n > 0:
s += str(n % 3)
n //= 3
return s[::-1]
for n in range(1, 1000):
s = tri(n)
if n % 3 == 0:
s += s[-2:]
else:
s += tri(n % 3 * 5)
r = int(s, 3)
if r >= 290:
print(n)
break
# Ответ: 11
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤🔥5 4❤3
Определите в прилагаемом файле последовательность идущих подряд символов наибольшей длины, в которой символ D встречается 1 раз и он находится в начале, а также содержится 50 цифр. В ответе запишите длину найдённой последовательности.
f = open('24.txt').readline()
for i in '0123456789':
f = f.replace(i, '1')
f = f.split('D')
M = [len(x) for x in f if x.count('1') == 50]
print(max(M)+1)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤6❤🔥5
Все пятибуквенные слова, составленные из букв В, Е, Н, Е, Р, А записаны в алфавитном порядке и пронумерованы.
Под каким нечетным номером в списке стоит последнее слово, которое не начинается с буквы Н и содержит ровно две буквы В?
from itertools import *
k = 0
alph = sorted('ВЕНЕРА')
A = product(alph, repeat=5)
for i in A:
i = ''.join(i)
k += 1
if i[0] != 'Н' and i.count('В') == 2 and k % 2 != 0:
print(k)
# Ответ: 7607
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥7❤6👍4
Операнды арифметического выражения записаны в системе счисления с основанием 27: 2107x792_27 + 565х211_27
В записи чисел переменной х обозначена неизвестная цифра из алфавита 27-ричной системы счисления.
Определите наименьшее значение х, при котором значение данного арифметического выражения кратно 26.
Для найденного х вычислите частное от деления значения арифметического выражения на 26 и укажите его в ответе в десятичной системе счисления.
for x in '0123456789ABCDEFGHIJKLMNOPQ':
a = int(f'2107{x}792', 27) + int(f'565{x}211', 27)
if a % 26 == 0:
print(a // 26)
break
#Ответ: 897607140
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤5❤🔥5
В файле 17.txt содержится последовательность целых чисел от -100 000 до 100 000 включительно. Определите количество пар элементов последовательности, в которых только один элемент является двузначным, а сумма элементов больше максимального элемента последовательности, оканчивающегося на 19. В ответе запишите без пробела кол-во найденных пар чисел, затем максимальную из их сумм. Под парой подразумевается два идущих подряд элемента последовательности.
f = open('17.txt').readline()
M = [int(i) for i in f]
max_19 = max(i for i in M if abs(i) % 100 == 19)
A = []
for i in range(len(M) - 1):
if (len(str(abs(M[i]))) == 2) + (len(str(abs(M[i+1]))) == 2) == 1:
if M[i] + M[i+1] > max_19:
A.append(M[i] + M[i+1])
print(len(A), max(A))
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4❤🔥3🔥3👍1