#kege #yandex
#reshu #statgrad
#polyakov
#ЕГЭ1 #ЕГЭ10 #ЕГЭ19
#ЕГЭ2 #ЕГЭ11 #ЕГЭ20
#ЕГЭ3 #ЕГЭ12 #ЕГЭ21
#ЕГЭ4 #ЕГЭ13 #ЕГЭ22
#ЕГЭ5 #ЕГЭ14 #ЕГЭ23
#ЕГЭ6 #ЕГЭ15 #ЕГЭ24
#ЕГЭ7 #ЕГЭ16 #ЕГЭ25
#ЕГЭ8 #ЕГЭ17 #ЕГЭ26
#ЕГЭ9 #ЕГЭ18 #ЕГЭ27
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Статград
Уровень: Базовый
Все десятибуквенные коды, составленные из букв, входящих в слово
СКАНЕР, расположены в алфавитном порядке и пронумерованы.
Определите количество кодов, для которых одновременно выполнены условия:
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
from itertools import productИмпорт функции product из модуля itertools, которая создает все возможные комбинации длиной n из указанных элементов.
num = 0Инициализация переменной num для отслеживания общего количества рассмотренных комбинаций.
cnt = 0Инициализация переменной cnt для подсчета количества комбинаций, удовлетворяющих условиям задачи.
for s in product(sorted('СКАНЕР'), repeat=10):Цикл for, в котором перебираются все возможные комбинации длиной 10 символов из отсортированных букв 'СКАНЕР'.
word = ''.join(s)Объединение символов из текущей комбинации в одно слово для дальнейшей проверки.
num += 1Увеличение счетчика num на 1 для отслеживания количества рассмотренных комбинаций.
if num % 3 == 0:Проверка, что номер рассматриваемой комбинации делится на 3 без остатка.
if word[0] in 'СКНР':Проверка, содержит ли первая буква слова 'С', 'К', 'Н' или 'Р'.
if word.count('Р') == 1:Проверка, что буква 'Р' встречается в слове ровно 1 раз.
cnt += 1Увеличение счетчика cnt на 1, если текущая комбинация удовлетворяет всем условиям.
print(cnt)Вывод количества комбинаций, удовлетворяющих заданным условиям.
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Статград
Уровень: Средний
Числа AB267D1_p и F024A89_p записаны в системе счисления с основанием p.
При каком минимальном p сумма этих чисел будет делиться на p–1?
Так как функция int(num, base) работает только в диапазоне от 2 до 36, то нам приходится написать свою универсальную функцию my_int(), изучите её и используйте в сложных задачах.
def my_int(num, base):
return sum(x*base**i for i, x in enumerate(num[::-1]))
for p in range(16, 100):
A = my_int([10, 11, 2, 6, 7, 13, 1], p)
B = my_int([15, 0, 2, 4, 10, 8, 9], p)
if (A + B) % (p-1) == 0:
print(p)
break
# Ответ: 50
def my_int(num, base):Определение функции my_int, которая принимает список чисел num и основание base.
return sum(x*base**i for i, x in enumerate(num[::-1]))Функция возвращает сумму произведений элементов списка num на соответствующие степени base.
for p in range(16, 100):Запуск цикла for, который перебирает числа от 16 до 99 и использует их в качестве p.
if (my_int([10, 11, 2, 6, 7, 13, 1], p) + my_int([15, 0, 2, 4, 10, 8, 9], p)) % (p-1) == 0:Проверка условия: сумма результатов функции my_int для двух списков их модуль по отношению к p-1 равен нулю.
print(p)Вывод числа p, которое удовлетворяет условиям, после чего программа завершает работу, используя оператор break.
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Статград
Уровень: Базовый
Логическая функция F задаётся выражением:
((x ∨ y) → (y ∧ w)) ≡ ¬ ((y ∧ z) → (w ∨ x))
Дан частично заполненный фрагмент, содержащий неповторяющиеся
строки таблицы истинности функции F.
1 1 _ 1 | 1
0 _ 0 0 | 1
0 0 1 1 | 1
from itertools import *
def F(x, y, z, w):
return ((x or y) <= (y and w)) == (not((y and z) <= (w or x)))
for a1, a2 in product([0, 1], repeat=2):
table = [(1, 1, a1, 1), (0, a2, 0, 0), (0, 0, 1, 1)]
if len(set(table)) == len(table):
for i in permutations('xyzw'):
if [F(**dict(zip(i, r))) for r in table] == [1, 1, 1]:
print(*i, sep='')
# Ответ: zywx
from itertools import *Импорт функций из модуля itertools, который предоставляет различные инструменты для работы с итерациями.
def F(x, y, z, w):Определение функции F с параметрами x, y, z, w.
return ((x or y) <= (y and w)) == (not((y and z) <= (w or x)))Возвращение результата выражения, которое сравнивает логические операции с параметрами функции.
for a1, a2 in product([0, 1], repeat=2):Цикл, в котором перебираются все возможные комбинации пар из 0 и 1.
table = [(1, 1, a1, 1), (0, a2, 0, 0), (0, 0, 1, 1)]Создание списка table с кортежами чисел 0 и 1, используемыми в качестве аргументов функции.
if len(set(table)) == len(table):Проверка условия, что все элементы в table уникальны.
for i in permutations('xyzw'):Цикл, который перебирает все перестановки символов 'xyzw'.
if [F(**dict(zip(i, r))) for r in table] == [1, 1, 1]:Проверка условия, что результаты функции F для каждого элемента из table равны [1, 1, 1].
print(*i, sep='')Вывод комбинации символов i без разделителя на экран.
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Статград
Уровень: Базовый
При каком наименьшем целом A выражение
((y < 20) → (x > 70)) ∨ ¬((x < A) → (y > A))
окажется тождественно истинным при любых целых значениях x и y?
Все 15 номера суперудобно решать через функцию all() про нее писали в этой статье.
def F(x, y, A):
return ((y < 20) <= (x > 70)) or (not((x < A) <= (y > A)))
for A in range(10000):
if all(F(x, y, A) for x in range(100) for y in range(100)):
print(A)
break
# Ответ: 71
def F(x, y, A):Определение функции F, которая принимает три аргумента: x, y и A.
return ((y < 20) <= (x > 70)) or (not((x < A) <= (y > A)))Функция возвращает результат логического выражения, которое проверяет два условия и возвращает результат их логической операции or.
for A in range(10000):Запуск цикла for, который перебирает значения A от 0 до 9999.
if all(F(x, y, A) for x in range(100) for y in range(100)):Проверка: все результаты функции F(x, y, A) истинны для всех комбинаций значений x от 0 до 99 и y от 0 до 99.
print(A)Вывод значения A, которое соответствует условиям задачи, после чего выполнение программы завершается с помощью оператора break.
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
Автор: Статград
Уровень: Сложный
Назовём четвёркой четыре идущих подряд элемента
последовательности. Определите количество четвёрок, для которых
выполняются следующие условия:
– в четвёрке есть хотя бы два пятизначных числа и хотя бы одно не пятизначное;
– в четвёрке больше чисел, кратных 3, чем чисел, кратных 7;
– сумма элементов четвёрки больше максимального элемента
последовательности, запись которого заканчивается на 538, но меньше
удвоенного значения этого элемента.
numbers = [int(x) for x in open('17.txt')]
filtered = [x for x in numbers if str(x)[-3:] == '538']
result = []
for i in range(len(numbers) - 3):
# x, y, z, w = numbers[i:i + 4]
length = [len(str(abs(a))) for a in numbers[i:i + 4]]
if 2 <= length.count(5) < 4:
multiples_of_3 = [a for a in numbers[i:i + 4] if a % 3 == 0]
multiples_of_7 = [a for a in numbers[i:i + 4] if a % 7 == 0]
if len(multiples_of_3) > len(multiples_of_7):
if max(filtered) < sum(numbers[i:i + 4]) < max(filtered) * 2:
result.append(sum(numbers[i:i + 4]))
print(len(result), max(result))
# Ответ: 260 106865numbers = [int(x) for x in open('17.txt')]Чтение чисел из файла "17.txt" и преобразование их в целочисленный формат, помещение результатов в список numbers.
filtered = [x for x in numbers if str(x)[-3:] == '538']Создание нового списка под названием filtered, который содержит только элементы из numbers, у которых последние три цифры равны '538'.
result = []Инициализация пустого списка с именем result, в который будут помещаться результаты для последующего анализа.
for i in range(len(numbers) - 3):Запуск цикла for, который перебирает индексы элементов numbers за исключением последних трех элементов.
# x, y, z, w = numbers[i:i + 4]Комментарий указывает на предполагаемое использование переменных x, y, z, w для значений из подсписка numbers[i:i + 4], но непосредственно переменные не используются в данном участке кода.
length = [len(str(abs(a))) for a in numbers[i:i + 4]]Создание списка length, содержащего длины строковых представлений абсолютных значений элементов из подсписка numbers[i:i + 4].
if 2 <= length.count(5) < 4:Проверка условия: количество цифр "5" в длинах строковых представлений элементов равно или больше 2 и меньше 4.
multiples_of_3 = [a for a in numbers[i:i + 4] if a % 3 == 0]Формирование списка multiples_of_3, содержащего элементы из подсписка numbers[i:i + 4], которые делятся на 3 без остатка.
multiples_of_7 = [a for a in numbers[i:i + 4] if a % 7 == 0]Формирование списка multiples_of_7, содержащего элементы из подсписка numbers[i:i + 4], которые делятся на 7 без остатка.
if len(multiples_of_3) > len(multiples_of_7):Проверка условия: количество элементов, делящихся на 3 без остатка, больше количества элементов, делящихся на 7 без остатка.
if max(filtered) < sum(numbers[i:i + 4]) < max(filtered) * 2:Проверка условия: сумма элементов подсписка numbers[i:i + 4] находится в интервале между максимальным элементом списка filtered и удвоенным значением максимального элемента из filtered.
result.append(sum(numbers[i:i + 4]))Добавление суммы элементов подсписка numbers[i:i + 4] в список result.
print(len(result), max(result))Вывод количества элементов в списке result и максимального значения в этом списке.
Информатика ЕГЭ | itpy
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM