17799
#kege по информатике #ЕГЭ8Автор: В. Зарянкин
Уровень: Средний
Все четырёхбуквенные слова, в составе которых могут быть только русские буквы А, Р, Г, У, М, Е, Н, Т, записаны в алфавитном порядке и пронумерованы начиная с 1.
Вот начало списка:
1. АААА
2. АААГ
3. АААЕ
4. АААМ
5. АААН
...
Под каким номером в списке идёт последнее слово, в котором все буквы различны и все символы располагаются в алфавитном порядке?
from itertools import *
s = sorted('АРГУМЕНТ')
for n, p in enumerate(product(s, repeat=4), 1):
word = ''.join(p)
if len(word) == len(set(word)):
if list(word) == sorted(word):
print(n)
Ответ: 2424
from itertools import *
- Импорт всех функций из модуля itertools (в данном случае используется product)
s = sorted('АРГУМЕНТ')
- Создание отсортированного списка букв из слова "АРГУМЕНТ": ['А', 'Г', 'Е', 'М', 'Н', 'Р', 'Т', 'У']
for n, p in enumerate(product(s, repeat=4), 1):
- Цикл по всем возможным комбинациям букв длиной 4 (с повторами)
- product(s, repeat=4) генерирует декартово произведение списка s на себя 4 раза
- enumerate добавляет нумерацию, начиная с 1
word = ''.join(p)
- Объединение кортежа p в строку (слово из 4 букв)
if len(word) == len(set(word)):
- Проверка, что все буквы в слове уникальны (длина слова равна длине множества его букв)
if list(word) == sorted(word):
- Проверка, что буквы в слове идут в алфавитном порядке (слово равно своему отсортированному варианту)
print(n)
- Если оба условия выполнены, выводится номер текущей комбинации
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥3❤1👍1
Примеры кодов для задач 9, 17, 24, 26, 27 из ЕГЭ:
for M in open('9.txt'):
M = [int(i) for i in M.split()]
print(M)
M = [int(i) for i in open('17.txt')]
print(M)
s = open('24.txt').readline()
Считываем только первую строку файла.
ans = []
for M in open('26.txt'):
M = [int(i) for i in M.split()]
ans.append(M)
Сохраняем каждую строку как список чисел, а потом собираем всё в общий список.
f = open('27.А.txt').readlines()[1:]
for M in f:
M = [float(i.replace(',','.')) for i in M.split()]
x, y = M[0], M[1]
print(x, y)
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍5❤3❤🔥2🔥2
Автор: Яндекс учебник
Уровень: Средний
Определите количество строк таблицы, содержащих числа, для которых выполнены все условия:
1. Четыре числа строки можно разбить на две пары чисел с равными суммами
2. Максимальное число строки меньше суммы трёх оставшихся чисел сумма чисел в строке чётна
from itertools import permutations
cnt = 0
for s in open('0. files/9.csv'):
M = [int(x) for x in s.split(';')]
if sum(M) % 2 == 0:
if max(M) < sum(M) - max(M):
if any(p[0] + p[1] == p[2] + p[3] for p in permutations(M)):
cnt += 1
print(cnt)
Ответ: 139
· Импортируем функцию permutations для генерации всех перестановок
· Создаем счетчик и инициализируем его нулем
· Открываем файл '9.csv' и построчно читаем его
· Разбиваем строку по символу ';' и преобразуем каждый элемент в целое число
· Проверяем, что сумма всех чисел в строке четная
· Проверяем, что максимальное число меньше суммы всех остальных чисел
· Проверяем, существует ли такая перестановка 4 чисел, где сумма первых двух равна сумме последних двух
· Если все три условия выполнены, увеличиваем счетчик на 1
· Выводим итоговое количество строк, удовлетворяющих всем условиям
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥4🔥1
📎 list - это изменяемый упорядоченный список. Можно добавлять, удалять, менять элементы. Например:
fruits = ['яблоко', 'банан', 'апельсин']📎 📎 tuple - неизменяемая последовательность. Отлично подходит, когда нужно зафиксировать набор данных:
coordinates = (10, 20)📎 📎 set - множество уникальных элементов. Быстро искать, удалять дубликаты:
unique_numbers = {1, 2, 3}📎 📎 dict - словарь, отображение ключей на значения. Очень удобно для хранения пар "ключ-значение":
person = {'имя': 'Анна', 'возраст': 25}📎 ❄️ frozenset - неизменяемое множество, его нельзя менять после создания. Используется там, где нужен "жёсткий" набор данных. frozenset([1, 2, 3, 4])➡️ frozenset({1, 2, 3, 4})🔼 🔽 deque - двусторонняя очередь из модуля collections. Быстро добавлять и удалять элементы с обоих концов:
from collections import deque⚙️ d = deque() - инициализировать элементами из любого итерируемого объекта (список, кортеж и т. д.).
Технологии телеграмма не стоят на месте, поэтому обращаю ваше внимание, что мы часто используем инструмент "цитата". Кликайте на цитату выше, чтобы открыть текст для чтения
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3❤🔥3🔥1
Автор: О. Лысенков
Уровень: Средний
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится восьмеричная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если восьмеричная запись начинается на 5, то все двойки в записи меняются на единицы, а все единицы меняются на двойки после к числу приписывается 11 слева;
б) если восьмеричная запись начинается не на 5, то к записи справа приписывается 10, а первый разряд полученной записи заменяется на 2.
Укажите максимальное число N, для которого результатом работы алгоритма является наибольшее число R, меньшее 1354.
L = []
for n in range(1, 10000):
s = f'{n:o}' # s = oct(n)[2:]
if s[0] == '5':
s = s.replace('2', '*')
s = s.replace('1', '2')
s = s.replace('*', '1')
s = '11' + s
else:
s = s + '10'
s = '2' + s[1:] # а первый разряд полученной записи заменяется на 2.
r = int(s, 8)
if r < 1354:
L.append((r, n))
print(max(L))
Ответ: 61
· Создаем пустой список для хранения пар (результат, исходное число)
· Перебираем числа n от 1 до 9999
· Преобразуем число n в восьмеричную систему счисления (без префикса '0o')
· Проверяем, начинается ли восьмеричная запись с цифры 5
· Временно заменяем все цифры 2 на символ '*' (чтобы избежать конфликта при следующих заменах)
· Заменяем все цифры 1 на 2
· Заменяем временные символы '*' обратно на 1 (фактически меняем местами 1 и 2)
· Добавляем в начало строки две единицы '11'
· Если восьмеричная запись НЕ начинается с 5
· Добавляем в конец строки '10'
· Заменяем первую цифру полученной строки на 2
· Преобразуем полученную строку s обратно в десятичное число, интерпретируя ее как восьмеричную
· Проверяем, что результат r меньше 1354
· Добавляем в список пару (результат r, исходное число n)
· Находим и выводим максимальную пару в списке (сравнение происходит сначала по r, затем по n)
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤🔥2❤1🔥1