Информатика ЕГЭ | itpy
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: ЕГКР 27.04
Уровень: Базовый
Определите количество пар элементов последовательности, в которых только один из двух элементов оканчивается на 21 и является пятизначным числом, а сумма квадратов элементов пары не меньше квадрата максимального элемента последовательности, оканчивающегося на 21 и являющегося пятизначным числом.
Аудио с пояснением к коду решения оставлю в комментариях.
M = [int(x) for x in open('17.txt')]
D = [int(x) for x in M if str(x)[-2:] == '21' and len(str(abs(x)))==5 ]
R = []
for i in range(len(M)-1):
x, y = M[i], M[i+1]
if (x in D and y not in D) or (y in D and x not in D):
if (x**2)+(y**2) >= max(D)**2:
R.append(x + y)
print(len(R), max(R))
# Ответ: 6283 9627
M = [int(x) for x in open('17.txt')]
Создание списка M, содержащего целочисленные значения, полученные из файла '17.txt'.
D = [int(x) for x in M if str(x)[-2:] == '21' and len(str(abs(x)))==5]
Фильтрация списка M, чтобы получить только элементы, оканчивающиеся на '21' и имеющие длину равную 5 символам.
R = []
Инициализация пустого списка R для хранения результатов.
for i in range(len(M)-1):
Цикл for, который проходит по индексам элементов списка M за исключением последнего.
5⃣ x, y = M[i], M[i+1]
Присваивание переменным x и y значений пар элементов списка M.
if (x in D and y not in D) or (y in D and x not in D):
Проверка условия: если один элемент из пары содержится в списке D, а другой нет, или наоборот.
if (x**2)+(y**2) >= max(D)**2:
Проверка условия: если квадрат суммы элементов пары больше или равен квадрату максимального значения из списка D.
R.append(x + y)
Добавление суммы элементов пары x и y в список R.
print(len(R), max(R))
Вывод количества элементов в списке R и максимального значения из списка R.
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Номера 5, 8, 12 ЕГЭ Сумма цифр строки в Python ч.2 #егэ #огэ #информатика #информатикаегэ #python
This media is not supported in your browser
VIEW IN TELEGRAM
Уровень: Сложный
Дана программа для исполнителя Редактор:
ПОКА нашлось(21)
заменить (21, 6)
Исходная строка содержит десять единиц и некоторое количество двоек, других цифр нет, точный порядок расположения единиц и двоек неизвестен. После выполнения программы получилась строка с суммой цифр 50. Какое наименьшее количество двоек могло быть в исходной строке?
Опишу в следующем посте*
from itertools import *
for n in range(1, 10):
for s in product('12', repeat=10+n):
if s.count('1') == 10:
s = ''.join(s)
while '21' in s:
s = s.replace('21', '6', 1)
if sum(map(int, s)) == 50:
print(n)
exit()
# Ответ: 8
from itertools import *
Импорт всех функций из модуля itertools.
for n in range(1, 10):
Цикл for, который проходит по значениям n от 1 до 9 включительно.
for s in product('12', repeat=10+n):
Вложенный цикл for, который поочередно формирует кортежи из повторений символов '1' и '2', накопленных 10+n раз, и сохраняет их в переменную s.
if s.count('1') == 10:
Проверка условия: если символ '1' встречается в строке s 10 раз.
s = ''.join(s)
Преобразование кортежа в строку s.
while '21' in s:
Цикл while, который будет продолжаться до тех пор, пока в строке s присутствует подстрока '21'.
s = s.replace('21', '6', 1)
Замена первого вхождения подстроки '21' на символ '6' в строке s.
if sum(map(int, s)) == 50:
Проверка условия: если сумма цифр в строке s, преобразованных в целые числа, равна 50.
print(n)
Вывод значения переменной n.
exit()
Завершение выполнения программы.
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Свой вопрос вы можете оставить в нашем чатике.
В таких случаях нам необходимо воспользоваться библиотекой
itertools
и обязательно методом product
, так как permutations
не подойдет из-за объемного перебора (слишком долго работает). Код должен начинаться примерно вот так:
for n in range(1, 10):
for s in product('12', repeat=10+n):
if s.count('1') == 10:
s = ''.join(s)
Именно этот код я взял из разбора выше, тут видно, что мы не знаем сколько двоек нам необходимо, но точно знаем, что единиц должно быть десять, что и фиксируем через
if s.count('1') == 10:
Хотя вероятность появления прототипа крайне мала, рекомендуется решать такие задачи в первую очередь аналитически
Информатика ЕГЭ | itpy
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
Дорогие родители!
Если ваши дети учатся в 8-10 классах и интересуются IT сферой, то эта информация будет весьма полезной для вас!🚀
«Лаборатория Касперского» предлагает летнюю практику для школьников и студентов колледжей.
Участие в ней абсолютно бесплатное 💰
❗️ Приём заявок до 20 мая
Для регистрации воспользуйтесь ссылкой: Долина технологий
PS: не реклама, просто делюсь интересными находками.
Если ваши дети учатся в 8-10 классах и интересуются IT сферой, то эта информация будет весьма полезной для вас!
«Лаборатория Касперского» предлагает летнюю практику для школьников и студентов колледжей.
Участие в ней абсолютно бесплатное 💰
Для регистрации воспользуйтесь ссылкой: Долина технологий
PS: не реклама, просто делюсь интересными находками.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Задание, которое завалило 80% сдающих ЕГЭ по информатике в 2023 #егэ #информатика #информатикаегэ
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: М. Паршиков
Уровень: Средний
Алгоритм вычисления значения функции F(n), где n - натуральное число, задан следующими соотношениями:
F(n) = n, при n ≥ 3000
F(n) = n + x + F(n+2), при n < 3000
При каком целом значении х, значение выражения:
F(2984)−F(2988)=5916
def F(n):
if n >= 3000:
return n
if n < 3000:
return n + x + F(n+2)
for x in range(-1000, 1000):
if F(2984) - F(2988) == 5916:
print(x)
# Ответ: -27
def F(n):
Объявление функции F с аргументом n.
if n >= 3000:
Проверка условия: если n больше или равно 3000.
return n
Возвращение значения n, если условие из пункта 2 выполняется.
if n < 3000:
Проверка условия: если n меньше 3000.
return n + x + F(n+2)
Возвращение значения n + x + F(n+2), если условие из пункта 4 выполняется. Рекурсивный вызов функции F.
for x in range(-1000, 1000):
Цикл for, который перебирает значения от -1000 до 999 включительно и присваивает каждое значение переменной x.
if F(2984) - F(2988) == 5916:
Проверка условия: если разность F(2984) и F(2988) равна 5916.
print(x)
Вывод значения x, если условие из пункта 7 выполняется.
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
▪️ КОГДА МОЖНО ПОДАТЬ ЗАЯВЛЕНИЕ?
Заявления на пересдачу по информатике или русскому языку принимаются с 26 июня по 1 июля включительно.
Заявления на экзамен по математике можно подать с 27 июня по 2 июля включительно.
▪️ КТО ИМЕЕТ ПРАВО НА ПЕРЕСДАЧУ?
Возможность пересдачи предоставлена только выпускникам 11 класса, которые сдают экзамены в основной срок или в резерв основной волны (при этом повторный экзамен в резервный день по уважительной причине или в случае недобора необходимого количества баллов для поступления допускается).
▪️ БУДЕТ ЛИ АННУЛИРОВАН ПРЕЖНИЙ РЕЗУЛЬТАТ ПОСЛЕ ПОДАЧИ ЗАЯВЛЕНИЯ?
После подачи заявления результат прошлого экзамена будет аннулирован. Если студент не явится на пересдачу или если экзамен не будет завершен по объективным причинам (например, по причине здоровья), прежний результат останется в силе.
Информатика ЕГЭ | itpy
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Готовимся к ЕГЭ правильно: в Steam вышло ЕГЭ по мемам 🤨
Вам нужно отвечать на каверзные вопросы по популярным мемасикам, а в финале вам подберут мемный вуз
А как вы относитесь к мемам?
❤🔥 – Мемы это часть современного интернета
👾 – Было бы время.. в основном сейчас уроки/сон
Вам нужно отвечать на каверзные вопросы по популярным мемасикам, а в финале вам подберут мемный вуз
А как вы относитесь к мемам?
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Уровень: Базовый
Элементами множеств А, P и Q являются натуральные числа, причём P = { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20} и Q = { 3, 6, 9, 12, 15, 18, 21, 24, 27, 30 }.
Известно, что выражение ((x ∈ A) → (x ∈ P)) ∧ (¬(x ∈ Q) → ¬(x ∈ A)) истинно при любом значении переменной х. Определите наибольшее возможное количество элементов множества A.
a = set(range(0, 1000))
def F(x):
P = x in {2, 4, 6, 8, 10, 12, 14, 16, 18, 20}
Q = x in {3, 6, 9, 12, 15, 18, 21, 24, 27, 30}
A = x in a
# ((x ∈ A) → (x ∈ P)) ∧ (¬(x ∈ Q) → ¬(x ∈ A))
return (A <= P) and ((not Q) <= (not A))
for x in range(0, 10000):
if F(x) == False:
a.remove(x)
print(len(a))
# Ответ: 3
a = set(range(0, 1000))
Создание множества a, содержащего числа от 0 до 999.
def F(x):
Объявление функции F с аргументом x.
P = x in {2, 4, 6, 8, 10, 12, 14, 16, 18, 20}
Проверка, принадлежит ли x множеству {2, 4, 6, 8, 10, 12, 14, 16, 18, 20} и сохранение результата в переменную P.
Q = x in {3, 6, 9, 12, 15, 18, 21, 24, 27, 30}
Проверка, принадлежит ли x множеству {3, 6, 9, 12, 15, 18, 21, 24, 27, 30} и сохранение результата в переменную Q.
A = x in a
Проверка, принадлежит ли x множеству a (от 0 до 999) и сохранение результата в переменную A.
return (A <= P) and ((not Q) <= (not A))
Возвращение результата логического выражения: (A <= P) and ((not Q) <= (not A)).
for x in range(0, 10000):
Цикл for, который перебирает значения x от 0 до 9999.
if F(x) == False:
Проверка условия: если результат функции F для значения x равен False.
a.remove(x)
Удаление значения x из множества a.
print(len(a))
Вывод длины множества a после выполнения цикла.
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Спанч-Боб намекает, что рабочая неделя началась 🥲
Совсем немного времени осталось до ЕГЭ. Наконец-то завершил работу над шпаргалками и постараюсь выкладывать их для вас каждый день.
Поддержите лайками мои бессонные ночи🙄
Совсем немного времени осталось до ЕГЭ. Наконец-то завершил работу над шпаргалками и постараюсь выкладывать их для вас каждый день.
Поддержите лайками мои бессонные ночи
Please open Telegram to view this post
VIEW IN TELEGRAM
Хочу сделать пост про библиотеки необходимые/полезные на экзамене, как считаете будет полезно собрать такую шпору?
Anonymous Poll
96%
4%
import turtle as t
t.tracer(0)
t.fd(10) # t.bk(10)
t.rt(90) # t.lt(90)
t.up()
t.down()
x, y = 0, 0
t.goto(x, y)
t.dot(2, 'red')
t.done()
from itertools import product
from itertools import permutations
combinations = list(product([1, 2, 3], repeat=2))
for combination in combinations:
print(combination)
perms = list(permutations("abc"))
for perm in perms:
print(''.join(perm))
from ipaddress import *
net = ip_network('адрес узла/маска', 0)
print(net, net.netmask, net.num_addresses)
Одна увеличивает глубину рекурсии:
import sys
sys.setrecursionlimit(10000)
Вторая ускоряет вычисления через использование кэширования:
from functools import *
@lru_cache(None)
def F(n):
from fnmatch import fnmatch
if fnmatch('123', '*?3'):
pass
import string
alphabet = string.ascii_uppercase
print(alphabet) # ABCDEFGHIJKLMNOPQRSTUVWXYZ
print(string.punctuation)
# !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
import math as m
print(m.sqrt(16))
print(m.ceil(7/2))
Поставьте котика
Информатика ЕГЭ | itpy
Поддержать автора: boosty
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: C.Горбачёв
Уровень: Базовый
1. Строится восьмеричная запись числа N.
2. а) если количество чётных цифр в записи числа нечётно, то к трём последним разрядам восьмеричной записи справа дописывается 46;
б) если количество чётных цифр в записи числа чётно, то остаток от деления числа на 8 умножается на 5, переводится в восьмеричную запись и дописывается слева.
Укажите минимальное число R, которое может быть получено с помощью описанного алгоритма при N не меньшем 80.
R = []
for n in range(81, 10000):
s = oct(n)[2:] # f'{n:o}'
chet = [x for x in s if x in '02468']
if len(chet) % 2 != 0:
s = s[-3:] + '46'
else:
x = (n % 8) * 5
s = oct(x)[2:] + s
r = int(s, 8)
R.append(r)
print(min(R))
# Ответ: 38
R = []
Создание пустого списка R, в который будут добавляться результаты.
for n in range(81, 10000):
Цикл, который перебирает числа от 81 до 9999.
s = oct(n)[2:] # f'{n:o}'
Преобразование числа n в восьмеричную систему счисления и сохранение результата в строковой переменной s.
chet = [x for x in s if x in '02468']
Формирование списка, содержащего только символы, которые являются четными цифрами.
if len(chet) % 2 != 0:
Если количество четных цифр в строке нечетное.
s = s[-3:] + '46'
Если условие из пункта 5 выполняется, изменяем строку s, добавляя к ней '46'.
else:
x = (n % 8) * 5
Вычисляем значение x как остаток от деления n на 8, умноженное на 5.
s = oct(x)[2:] + s
Обновляем значение s, добавляя к нему начальную часть, преобразованную из x в восьмеричную систему.
r = int(s, 8)
Преобразование строки s из восьмеричной системы счисления в целое число и сохранение результата в переменной r.
R.append(r)
Добавление значения r в список R.
print(min(R))
Вывод минимального значения из списка R.
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Поставь
n = 24
num_2 = bin(n)[2:] # 11000
num_8 = oct(n)[2:] # 30
num_16 = hex(n)[2:] # 18
n = 24
num_2 = f'{n:b}' # 11000
num_8 = f'{n:o}' # 30
num_16 = f'{n:x}' # 18
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
r = int(num_base, base)
print(int('1000', 2)) # 8
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')
Информатика ЕГЭ | itpy
Поддержать автора: boosty
Please open Telegram to view this post
VIEW IN TELEGRAM
Автор: Л.Шастин
Уровень: Средний
1. Строится запись числа N в системе счисления с основанием 12.
2. Далее эта запись обрабатывается по следующему правилу:
а) если число N делится на 4, то слева к нему приписывается «2», а справа «64»;
б) если число N на 4 не делится, то в конец числа дописывается его максимальная цифра в системе счисления с основанием 12.
Полученная таким образом запись является двенадцатеричной записью искомого числа R.
3. Результат переводится в десятичную систему и выводится на экран.
Аудио с пояснением к коду решения оставлю в комментариях.
alphabet = sorted('0123456789QWERTYUIOPASDFGHJKLZXCVBNM')
def convert(num, base):
r = ''
while num > 0:
r += alphabet[num % base]
num //= base
return r[::-1]
R = []
for n in range(1, 10000):
s = convert(n, 12)
if n % 4 == 0:
s = '2' + s + '64'
else:
s += max([x for x in s])
r = int(s, 12)
if r > 1799:
R.append(r)
print(min(R))
# Ответ: 1806
alphabet = sorted('0123456789QWERTYUIOPASDFGHJKLZXCVBNM')
Создание отсортированного списка символов, представляющих алфавит для кодирования чисел в других системах.
def convert(num, base):
Определение функции convert с аргументами num (число для конвертации) и base (основание системы счисления).
r = ''
Инициализация пустой строки r, которая будет содержать конвертированное число.
while num > 0:
Начало цикла, который будет выполняться, пока число num больше нуля.
r += alphabet[num % base]
Добавление символа из алфавита в строку r, соответствующего остатку от деления числа num на base.
num //= base
Целочисленное деление числа num на base.
return r[::-1]
Возврат результата функции, перевернутого конвертированного числа.
R = []
Создание пустого списка R для хранения результата.
for n in range(1, 10000):
Цикл, перебирающий числа от 1 до 9999.
s = convert(n, 12)
Конвертация числа n в двенадцатеричную систему и сохранение результата в строке s.
if n % 4 == 0:
Проверка условия: если число n делится на 4 без остатка.
s = '2' + s + '64'
Если условие из пункта 11 выполняется, изменяем строку s, добавляя к ней '2' в начале и '64' в конце.
else:
s += max([x for x in s])
Добавляем к строке s максимальное значение из всех символов.
r = int(s, 12)
Преобразование числа s из двенадцатеричной системы в десятичную и сохранение результата в переменной r.
if r > 1799:
Проверка условия: если результат r больше 1799.
R.append(r)
Добавление числа r в список R.
print(min(R))
Вывод минимального значения из списка R после завершения цикла.
Поддержать автора: boosty
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: ЕГКР 27.04.24
Уровень: Базовый
В прилагаемом файле определите максимальное количество символов в непрерывной подпоследовательности, состоящей из идущих подряд групп символов KLMN в указанном порядке, при этом в начале и в конце искомой последовательности группа символов KLMN может быть неполной.
Файл оставлю в комментариях
Аудио с пояснением к коду решения оставлю в комментариях.
s = open('24.txt').readline()
count = 3
maxi = 0
for i in range(len(s)-3):
if s[i:i+4] in ('KLMN', 'LMNK', 'MNKL', 'NKLM'):
count += 1
maxi = max(maxi, count)
else:
count = 3
print(maxi)
# Ответ: 182
s = open('24.txt').readline()
Чтение строки из файла "24.txt" и сохранение ее в переменную s.
count = 3
Инициализация переменной count со значением 3, которая будет использоваться для подсчета последовательности.
maxi = 0
Инициализация переменной maxi со значением 0, которая будет хранить максимальное количество найденных последовательностей.
for i in range(len(s)-3):
Цикл, перебирающий индексы от 0 до len(s)-4 для итерации по всем четверным подстрокам строки s.
if s[i:i+4] in ('KLMN', 'LMNK', 'MNKL', 'NKLM'):
Проверка, содержится ли текущая четверная подстрока строки s в заданных последовательностях 'KLMN', 'LMNK', 'MNKL' или 'NKLM'.
count += 1
Увеличение значения переменной count на 1, если найдена подходящая четверная последовательность.
maxi = max(maxi, count)
Обновление значения переменной maxi на максимальное из текущего значения и count.
else:
В случае, если текущая четверная подстрока не соответствует заданным последовательностям:
count = 3
Сброс значения переменной count до 3 для начала подсчета заново.
print(maxi)
Вывод максимального количества найденных последовательностей заданного типа в строке s после завершения цикла.
Поддержать автора: boosty
Please open Telegram to view this post
VIEW IN TELEGRAM