This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Резервный день 19.06.2024
Уровень: Базовый
Определите количество 15-ричных пятизначных чисел, в записи которых ровно одна цифра 8 и не менее двух цифр с числовым значением, превышающим 9.
В подобных задачах с цифрами обязательно необходимо добавлять проверку num[0] != '0', так как число не может начинаться с нуля.
from itertools import *
cnt = 0
for p in product('0123456789ABCDE', repeat=5):
num = ''.join(p)
if num[0] != '0' and num.count('8') == 1:
if len([x for x in num if int(x, 15) > 9]) >= 2:
cnt += 1
print(cnt)
# Ответ: 83175
from itertools import *
Импортируем все функции из модуля itertools для работы с итераторами.
cnt = 0
Инициализируем переменную счётчика cnt для подсчета подходящих комбинаций.
for p in product('0123456789ABCDE', repeat=5):
Используем функцию product для генерации всех возможных комбинаций длиной 5 из символов '0123456789ABCDE'.
num = ''.join(p)
Объединяем кортеж p в строку для получения текущего числа в виде строки.
if num[0] != '0' and num.count('8') == 1:
Проверяем, что первое число не равняется '0' и цифра '8' встречается в строке ровно один раз.
if len([x for x in num if int(x, 15) > 9]) >= 2:
Проверяем, что в числе присутствует как минимум две цифры, больше 9 в шестнадцатеричном представлении, то есть 'A', 'B', 'C', 'D', 'E'.
cnt += 1
Если все условия выполнены, увеличиваем счётчик cnt на 1.
print(cnt)
Выводим итоговое значение счётчика cnt, которое соответствует количеству подходящих комбинаций.
Наша Stepik подборкой задач
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Демоверсия 2025
Уровень: Базовый
Определите количество 12-ричных пятизначных чисел, в записи которых ровно одна цифра 7 и не более трёх цифр с числовым значением, превышающим 8.
Базовая задачка с комбинаторикой цифр. Не забудьте, что в таких задачах необходимо проверять наличие 0 на первой позиции.
from itertools import *
cnt = 0
for p in product('0123456789AB', repeat=5):
s = ''.join(p)
if s[0] != '0' and s.count('7') == 1:
if len([x for x in s if x > '8']) <= 3:
cnt += 1
print(cnt)
# Ответ: 67476
1️⃣
from itertools import *
Импортируем все функции из модуля itertools, который содержит функции для работы с итерациями.
cnt = 0
Инициализируем переменную cnt, которая будет использоваться для подсчета валидных комбинаций.
for p in product('0123456789AB', repeat=5):
Генерируем декартово произведение символов '0123456789AB' длиной 5, создавая все возможные комбинации.
s = ''.join(p)
Преобразуем кортеж p (содержащий текущую комбинацию) в строку s.
if s[0] != '0' and s.count('7') == 1:
Проверяем, что первый символ строки не является '0' и что символ '7' встречается ровно один раз.
if len([x for x in s if x > '8']) <= 3:
Создаем список из символов строки s, которые больше '8', и проверяем, что таких символов не более трех.
cnt += 1
Увеличиваем счетчик cnt на 1, если предыдущие условия выполнены.
print(cnt)
Выводим общее количество валидных комбинаций, соответствующих заданным критериям.
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
2 5 4 3
У нас уже собралась неплохая такая подборка 8 номеров, сохраняем и пользуемся! #ЕГЭ8 #useful
🚩 Разбор номера 17671 #kege по информатике #ЕГЭ8
Автор: Пересдача 04.07.2024
Уровень: Базовый
🚩 Разбор номера 17627 #kege по информатике #ЕГЭ8
Автор: Резервный день 19.06.2024
Уровень: Базовый
🚩 Разбор номера 5626 #kege по информатике #ЕГЭ8
🚩 Разбор номера 8417 #kege по информатике #ЕГЭ8
🚩 Разбор номера 15947 #reshu по информатике #ЕГЭ8
Уровень: Базовый
🚩 Разбор номера 4199 #polyakov по информатике #ЕГЭ8
Уровень: Сложный
🚩 Разбор номера 12917 #kege по информатике #ЕГЭ8
Автор: PRO100ЕГЭ
Уровень: Базовый
🚩 Разбор номера из нового варианта #statgrad по информатике #ЕГЭ8
Автор: Статград
Уровень: Базовый
🚩 Разбор номера 11827 #kege по информатике #ЕГЭ8
Автор: (Л. Шастин)
Уровень: Средний
🚩 Разбор номера 10090 #kege по информатике #ЕГЭ8
Уровень: Базовый
🚩 Разбор номера 12240 #kege по информатике #ЕГЭ8
Уровень: Базовый
🚩 Разбор номера 11827 #kege по информатике #ЕГЭ8
Автор: (Л. Шастин)
Уровень: Средний
🚩 Разбор номера 17521 #kege по информатике #ЕГЭ8
Автор: Основная волна 07.06.24
Уровень: Базовый
🚩 Разбор номера 17862 #kege по информатике #ЕГЭ8
Автор: Демоверсия 2025
Уровень: Базовый
Информатика ЕГЭ | itpy🧑💻
Поддержать автора донатом💵
Автор: Пересдача 04.07.2024
Уровень: Базовый
Автор: Резервный день 19.06.2024
Уровень: Базовый
Уровень: Базовый
Уровень: Сложный
Автор: PRO100ЕГЭ
Уровень: Базовый
Автор: Статград
Уровень: Базовый
Автор: (Л. Шастин)
Уровень: Средний
Уровень: Базовый
Уровень: Базовый
Автор: (Л. Шастин)
Уровень: Средний
Автор: Основная волна 07.06.24
Уровень: Базовый
Автор: Демоверсия 2025
Уровень: Базовый
Информатика ЕГЭ | itpy
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: РЕШУ ЕГЭ
Уровень: Базовый
Сколько слов длины 5, начинающихся с гласной буквы, можно составить из букв Е, Г, Э? Каждая буква может входить в слово несколько раз.
Крайне интересная задача, так как позволяет представить вот такое простое и эстетичное решение. Стандартное решение я постараюсь приложить в комментариях к этому посту.
from itertools import product
print([slovo[0] in 'ЕЭ' for slovo in product('ЕГЭ', repeat=5)].count(True))
# Ответ: 162
from itertools import product
Импортируем функцию product из модуля itertools, которая позволяет генерировать декартово произведение итераторов.
print([slovo[0] in 'ЕЭ' for slovo in product('ЕГЭ', repeat=5)]
В генераторе мы пробегаем все получившиеся слова через функцию product и если первый элемент слова является буквами Е или Э, то в список будет падать bool значение True.
.count(True))
Считаем количество истинных значений (True) в полученном списке и выводим это значение на экран.
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
3 6 4 4
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Яндекс учебник
Уровень: Простая
Артём составляет пятибуквенные слова из букв своего имени. Он ввёл два правила: не повторять буквы в одном слове и не ставить гласные первыми и последними одновременно.
Сколько таких слов может составить Артём?
Обратите внимание на этот if, интересная штука и не самая очевидная.
from itertools import *
cnt = 0
for p in permutations('Артём'.upper()):
word = ''.join(p)
if not(word[0] in 'АЁ' and word[-1] in 'АЁ'):
cnt += 1
print(cnt)
# Ответ: 108
from itertools import *
- Импортируются все функции и классы из модуля itertools, который предоставляет инструменты для создания итераторов.
cnt = 0
- Инициализируется переменная cnt, которая будет использоваться для подсчета количества подходящих перестановок.
for p in permutations('Артём'.upper()):
- Запускается цикл for, который проходит по всем возможным перестановкам заглавных букв слова "Артём".
word = ''.join(p)
- Перестановка p преобразуется в строку и сохраняется в переменной word.
if not(word[0] in 'АЁ' and word[-1] in 'АЁ'):
- Проверяется, начинается ли слово с буквы из множества 'АЁ' и заканчивается ли также на букву из того же множества; если это не так, выполняется следующий шаг.
cnt += 1
- Увеличивается счетчик cnt на 1, если условие в предыдущей строке истинно.
print(cnt)
- Выводится общее количество перестановок, удовлетворяющих заданному условию.
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥9🔥4 3🤔1
Автор: Джобс Е.
Уровень: Средний
Катя составляет 5-буквенные слова из букв слова АПРЕЛЬ и упорядочивает их в обратном алфавитном порядке.
Вот начало списка:
1. ЬЬЬЬЬ
2. ЬЬЬЬР
3. ЬЬЬЬП
4. ЬЬЬЬЛ
5. ЬЬЬЬЕ
6. ЬЬЬЬА
7. ЬЬЬРЬ
Сколько слов, оканчивающихся на Ь, запишет Катя, если заполнит список до 387 позиции?
from itertools import *
n = 0
cnt = 0
for p in product(sorted('АПРЕЛЬ', reverse=True), repeat=5):
word = ''.join(p)
n += 1
if word[-1] == 'Ь':
cnt += 1
print(word)
if n >= 387:
break
print(cnt)
# Ответ: 65
from itertools import *
- Импортируются все функции и классы из модуля itertools, который предоставляет инструменты для создания итераторов.
n = 0
- Инициализируется переменная n для подсчета количества сгенерированных комбинаций.
cnt = 0
- Инициализируется переменная cnt для подсчета слов, заканчивающихся на букву 'Ь'.
for p in product(sorted('АПРЕЛЬ', reverse=True), repeat=5):
- Запускается цикл for, который создает все возможные кортежи длиной 5 из букв слова 'АПРЕЛЬ', отсортированных в обратном порядке.
word = ''.join(p)
- Кортеж p преобразуется в строку word.
n += 1
- Увеличивается счетчик n на 1, чтобы отслеживать количество проверенных слов.
if word[-1] == 'Ь':
- Проверяется, заканчивается ли слово word на букву 'Ь'.
cnt += 1
- Увеличивается счетчик cnt, если слово заканчивается на 'Ь'.
print(word)
- Выводится слово, если оно заканчивается на 'Ь'.
if n >= 387:
- Проверяется, достигло ли количество проверенных слов значения 387.
break
- Завершается цикл, если количество проверенных слов достигает 387.
print(cnt)
- Выводится общее число слов, заканчивающихся на 'Ь'.
Наша Stepik подборкой задач
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥9🔥3❤1🫡1 1
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: (В. Зарянкин)
Уровень: Средний
Все четырёхбуквенные слова, в составе которых могут быть только русские буквы А, Р, Г, У, М, Е, Н, Т, записаны в алфавитном порядке и пронумерованы начиная с 1.
Вот начало списка:
1. АААА
2. АААГ
3. АААЕ
4. АААМ
5. АААН
Под каким номером в списке идёт последнее слово, в котором все буквы различны и все символы располагаются в алфавитном порядке?
from itertools import *
for n, p in enumerate(product(sorted('АРГУМЕНТ'), repeat=4), 1):
slovo = ''.join(p)
if len(slovo) == len(set(slovo)): # все буквы различны
# print(slovo) # АГЕМ
# print(list(slovo)) # ['А', 'Г', 'Е', 'М']
# print(sorted(slovo)) # ['А', 'Г', 'Е', 'М']
if list(slovo) == sorted(slovo):
print(n)
# Ответ: 2424
from itertools import *
- Импортируются все функции и классы из модуля itertools, который предоставляет инструменты для создания итераторов.
for n, p in enumerate(product(sorted('АРГУМЕНТ'), repeat=4), 1):
- Цикл for перебирает все возможные комбинации длиной 4 из букв слова 'АРГУМЕНТ', отсортированных в алфавитном порядке. Каждая комбинация сопровождается порядковым номером n, начиная с 1.
slovo = ''.join(p)
- Комбинация p преобразуется в строку и сохраняется в переменной slovo.
if len(slovo) == len(set(slovo)): # все буквы различны
- Проверяется, содержатся ли в строке slovo только уникальные символы, сравнивая длину строки и множества из этой строки.
if list(slovo) == sorted(slovo):
- Проверяется, упорядочены ли буквы в slovo в алфавитном порядке.
print(n)
- Выводится порядковый номер текущей комбинации, если выполнены оба условия уникальности и упорядоченности букв.
Тут ответы на все вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7❤🔥4🔥2
Ссылка на подборку с разборами 8 номеров на канале, сохраняйте и отправляйте другу: click here
И пару полезных стрчоку уже здесь:
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.
Информатика ЕГЭ | itpy
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥9❤2🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Яндекс Учебник
Уровень: Средний
Определите количество пятизначных чисел в 14-ричной системе счисления, в записи которых цифры из набора ABCD не стоят рядом с нечётными цифрами из набора: 13579.
Обратите внимание! Что условия, которые требуют замены элементов строки через num = num.replace(x, 'A') необходимо ставить в самом конце программы! Чтобы не повредить все предыдущие условия задач подобного типа.
from itertools import *
cnt = 0
for p in product('0123456789ABCD', repeat=5):
num = ''.join(p)
if num[0] != '0':
for x in 'ABCD':
num = num.replace(x, 'A')
for x in '13579':
num = num.replace(x, '1')
if '1A' not in num and 'A1' not in num:
cnt += 1
print(cnt)
# Ответ: 217888
from itertools import *
Импортируем все функции из модуля itertools, который предоставляет различные функции для работы с итераторами.
cnt = 0
Инициализируем переменную cnt для подсчета количества допустимых комбинаций.
for p in product('0123456789ABCD', repeat=5):
Используем функцию product для генерации всех возможных комбинаций длиной 5 из символов '0123456789ABCD'.
num = ''.join(p)
Объединяем текущую комбинацию p в строку num.
if num[0] != '0':
Проверяем, чтобы первая цифра num не была '0', чтобы избежать некорректных чисел.
for x in 'ABCD':
Запускаем цикл, чтобы заменить все символы 'A', 'B', 'C' и 'D' на 'A'.
num = num.replace(x, 'A')
Заменяем текущий символ x на 'A' в строке num.
for x in '13579':
Запускаем цикл, чтобы заменить все нечетные цифры '1', '3', '5', '7' и '9' на '1'.
num = num.replace(x, '1')
Заменяем текущий символ x на '1' в строке num.
if '1A' not in num and 'A1' not in num:
Проверяем, чтобы строка num не содержала подстроки '1A' или 'A1'.
cnt += 1
Если предыдущая проверка прошла успешно, увеличиваем счетчик cnt на 1.
print(cnt)
Выводим значение cnt, что соответствует количеству допустимых комбинаций.
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥8👍3🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Решу ЕГЭ
Уровень: Базовый
Все 5-буквенные слова, составленные из букв Б, К, Ф, Ц, записаны
в алфавитном порядке и пронумерованы. Вот начало списка:
1. БББББ
2. ББББК
3. ББББФ
4. ББББЦ
5. БББКБ
Запишите слово, которое стоит на 486-м месте от начала списка.
Разберем задачу 3 разными способами и каждый выберет, тот способ,который ему понравился.
s = sorted('БКФЦ')
print(s) # ['Б', 'К', 'Ф', 'Ц']
n = 0
for a in s:
for b in s:
for c in s:
for d in s:
for e in s:
slovo = a + b + c + d + e
n += 1
if n == 486:
print(n, slovo)
s = sorted('БКФЦ')
s,
содержащий отсортированные символы строки 'БКФЦ'.
print(s) # ['Б', 'К', 'Ф', 'Ц']
s
для проверки.n = 0
n,
который будем использовать для подсчета количества сгенерированных слов.for a in s:
for b in s:
for c in s:
for d in s:
for e in s:
s.
Каждый цикл отвечает за одну позицию в слове.slovo = a + b + c + d + e
slovo
путем объединения символов a, b, c, d, e.
n += 1
n
увеличивается на 1 для каждой новой комбинации.if n == 486:
print(n, slovo)
n
достигает значения 486, выводится номер комбинации и само слово.from itertools import *
n = 0
for p in product(sorted('БКФЦ'), repeat=5):
slovo = ''.join(p)
n += 1
if n == 486:
print(n, slovo)
from itertools import *
itertools,
который предоставляет функции для работы с комбинациями.n = 0
n
для подсчета количества сгенерированных слов.for p in product(sorted('БКФЦ'), repeat=5):
product,
которая генерирует все возможные комбинации из символов 'Б', 'К', 'Ф', 'Ц'
с длиной 5 .slovo = ''.join(p)
p
преобразуется в строку slovo
с помощью метода join.
n += 1
n
увеличивается на 1 для каждой новой комбинации.if n == 486:
print(n, slovo)
n
достигает значения 486, выводится номер комбинации и само слово.from itertools import *
for n, p in enumerate(product(sorted('БКФЦ'), repeat=5), 1):
slovo = ''.join(p)
if n == 486:
print(n, slovo)
from itertools import *
itertools.
for n, p in enumerate(product(sorted('БКФЦ'), repeat=5), 1):
enumerate,
которая добавляет счетчик n
к каждому элементу, генерируемому функцией product.
Счетчик начинается с 1.slovo = ''.join(p)
p
преобразуется в строку slovo
с помощью метода join.
if n == 486:
print(n, slovo)
n
достигает значения 486, выводится номер комбинации и само слово.Второй канал про теорию Python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8 4❤3🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
11616
#kege по информатике #ЕГЭ8Автор: М. Ишимов
Уровень: Средний
Сколько существует семнадцатеричных пятизначных чисел, не содержащих в своей записи более двух цифр 1, при этом никакая нечётная цифра не стоит рядом с цифрой 1?
Данный способ позволяет перебрать алфавит и отсортировать его.
alphabet = sorted('0123456789QWERTYUIOPASDFGHJKLZXCVBNM')
print(alphabet[3:17:2])
from itertools import *
cnt = 0
for s in product(alphabet[:17], repeat=5):
num = ''.join(s)
if num[0] != '0':
if num.count('1') <= 2:
for a in alphabet[3:17:2]:
num = num.replace(a, '*')
if '1*' not in num and '*1' not in num and '11' not in num:
cnt += 1
print(cnt)
Ответ: 1117608
alphabet = sorted('0123456789QWERTYUIOPASDFGHJKLZXCVBNM')
sorted
сортирует символы в алфавитном порядке. print(alphabet[3:17:2])
from itertools import *
itertools,
который предоставляет функции для работы с генерациями комбинаций.cnt = 0
cnt,
которая будет использоваться для подсчета подходящих комбинаций.for s in product(alphabet[:17], repeat=5):
product,
которая генерирует все возможные комбинации длиной 5 из первых 17 символов алфавита (alphabet[:17]
).Каждая комбинация
s
представляет собой кортеж из 5 символов.num = ''.join(s)
s
преобразуется в строку num
с помощью метода join
.if num[0] != '0':
не равен '0'
.if num.count('1') <= 2:
'1'
встречается в строке
не более двух раз.for a in alphabet[3:17:2]:
num = num.replace(a, '*')
заменяется на '*'
в строке.if '1*' not in num and '*1' not in num and '11' not in num:
нет подстрок '1*', '*1'
и '11'
.cnt += 1
увеличивается на 1.print(cnt)
Второй канал про теорию Python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3🔥3❤🔥2
Автор: С.Якунин
Уровень: Средний
Полина составляет слова, переставляя буквы в слове ПАЙТОН. Сколько слов может составить Полина, если известно, что сумма порядковых номеров гласных букв, в каждом из них, равна 6? Буквы нумеруются слева направо, начиная с единицы.
Аудио с пояснением к коду решения оставлю в комментариях.
from itertools import *
cnt = 0
for p in permutations('ПАЙТОН'):
word = ''.join(p)
summa = word.index('А')+1 + word.index('О')+1
if summa == 6:
cnt += 1
print(cnt)
Ответ: 96
from itertools import *
Импортируется модуль itertools для работы с перестановками (permutations).
cnt = 0
Создается счетчик cnt, который будет считать количество подходящих перестановок.
for p in permutations('ПАЙТОН'):
Цикл перебирает все возможные перестановки букв в слове 'ПАЙТОН'.
word = ''.join(p)
Каждая перестановка p (это кортеж букв) объединяется в строку word.
summa = word.index('А')+1 + word.index('О')+1
- word.index('А') возвращает индекс буквы 'А' в строке (начиная с 0).
- +1 добавляется, чтобы считать позицию с 1 (как в обычном порядке).
- Аналогично для буквы 'О'.
- summa — это сумма позиций букв 'А' и 'О' в текущей перестановке.
if summa == 6:
Проверяется, равна ли сумма позиций 'А' и 'О' 6.
cnt += 1
Если условие выполнено (summa == 6), счетчик увеличивается на 1.
print(cnt)
В конце выводится общее количество подходящих перестановок.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥9👍4🔥4
Автор: А.Вдовин
Уровень: Средней
Найдите количество четырехзначных чисел в девятеричной системе счисления, в которых есть ровна одна цифра 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
from itertools import *
Импорт всех функций из модуля itertools, который предоставляет удобные инструменты для работы с итераторами
cnt = 0
Инициализация счётчика cnt, который будет хранить количество подходящих чисел
for p in product('012345678', repeat=4):
Цикл по всем возможным комбинациям длиной 4 из цифр '012345678' (включая повторы)
num = ''.join(p)
Преобразование текущей комбинации p в строку num
if num[0] != '0':
Проверка, что число не начинается с нуля (чтобы избежать ведущих нулей)
if num.count('8') == 1:
Проверка, что в числе ровно одна цифра '8'
i = num.index('8')
Нахождение индекса цифры '8' в строке num
summa_left = sum(map(int, num[:i]))
Вычисление суммы цифр слева от '8' (преобразование среза строки в числа и их суммирование)
summa_right = sum(map(int, num[i+1:]))
Вычисление суммы цифр справа от '8'
if summa_left == summa_right:
Проверка равенства сумм слева и справа от '8'
cnt += 1
Увеличение счётчика, если условие выполнено
print(cnt)
Вывод итогового количества подходящих чисел
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍5❤3❤🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Подготовили для вас методическое пособие по решению 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
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥7🔥5👍4
Автор: Статград
Уровень: Базовый
Все десятибуквенные коды, составленные из букв, входящих в слово
СКАНЕР, расположены в алфавитном порядке и пронумерованы.
Определите количество кодов, для которых одновременно выполнены условия:
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
❤🔥8🔥5 5❤1
Автор: А.Богданов
Уровень: Базовый
Марина собирает восьмибуквенные слова из букв своего имени. Все буквы могут многократно повторяться. На каком месте окажется имя МАРИАННА в отсортированном по алфавиту списке сгенерированных слов? Нумерация начинается с 1.
Аудио с пояснением к коду решения оставлю в комментариях.
from itertools import *
for n, p in enumerate(product(sorted('МАРИН'), repeat=8), 1):
word = ''.join(p)
if word == 'МАРИАННА':
print(n)
break
Ответ: 169466
from itertools import *
Импорт всех функций из модуля itertools, включая функцию product, которая будет использоваться для генерации декартова произведения
for n, p in enumerate(product(sorted('МАРИН'), repeat=8), 1):
Запуск цикла, где:
• sorted('МАРИН') сортирует символы строки 'МАРИН' в алфавитном порядке (['А', 'И', 'М', 'Н', 'Р'])
• product(..., repeat=8) генерирует все возможные комбинации длины 8 из этих символов
• enumerate(..., 1) нумерует каждую комбинацию, начиная с 1
• n хранит номер текущей комбинации, p — саму комбинацию в виде кортежа символов
word = ''.join(p)
Преобразует кортеж символов p в строку word
if word == 'МАРИАННА':
Проверяет, совпадает ли текущая комбинация word с искомым словом 'МАРИАННА'
print(n)
Если условие выполняется, выводит номер комбинации n
break
Прерывает цикл после нахождения нужного слова
Please open Telegram to view this post
VIEW IN TELEGRAM
4❤🔥9👍4 4
Собрал для вас основные моменты, которые важно знать при решении 8 номера. Для закрепления материала оставляю ссылку на подборку всех 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)
В данном задании необходимо найти какое количество различных кодовых слов можно составить.
Автор: Открытый вариант 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)
В данном прототипе нужно найти количество чисел, которые можно составить.
Автор: ЕГКР 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
Please open Telegram to view this post
VIEW IN TELEGRAM
7❤🔥26 11🔥8❤2 2
Даны 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
Все пятибуквенные слова, составленные из букв В, Е, Н, Е, Р, А записаны в алфавитном порядке и пронумерованы.
Под каким нечетным номером в списке стоит последнее слово, которое не начинается с буквы Н и содержит ровно две буквы В?
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
Автор: Джобс Е.
Уровень: Простой
Сколько существует 4-разрядных четверичных чисел, в которых хотя бы одна цифра встречается не менее двух раз?
from itertools import *
cnt = 0
for p in product('0123', repeat=4):
num = ''.join(p)
if num[0] != '0':
if any(num.count(x) >= 2 for x in num):
cnt += 1
print(cnt)
Ответ: 174
from itertools import *
- Импорт всех функций из модуля itertools (используется функция product)
cnt = 0
- Инициализация счетчика для подсчета подходящих комбинаций
for p in product('0123', repeat=4):
- Цикл по всем возможным 4-значным комбинациям из цифр 0,1,2,3 (с повторами)
- Например: ('0','0','0','0'), ('0','0','0','1'), ..., ('3','3','3','3')
num = ''.join(p)
- Объединение кортежа символов в строку (например, ('1','2','3','0') → '1230')
if num[0] != '0':
- Проверка, что число не начинается с 0 (исключаем 4-значные числа с ведущим нулем)
if any(num.count(x) >= 2 for x in num):
- Проверка, что в числе есть хотя бы одна цифра, которая повторяется 2 или более раз
- any() возвращает True, если хотя бы один элемент удовлетворяет условию
cnt += 1
- Если оба условия выполнены (не начинается с 0 и есть повторяющиеся цифры), увеличиваем счетчик
print(cnt)
- Вывод общего количества подходящих комбинаций
Please open Telegram to view this post
VIEW IN TELEGRAM