Помогите решить 8 задание в егэ

Рейтинг: 0Ответов: 1Опубликовано: 18.01.2023

(№ 5890) (А. Бриккер) Определите количество шестизначных чисел, записанных в восьмеричной системе счисления, в которых первые две цифры меньше всех оставшихся четырёх цифр, а запись числа не содержит трёх подряд идущих чётных цифр.

Ответ: 5528

Не понимаю, где я могла допустить ошибку

Мой код:

from itertools import *

s = '01234567'
k = 0

for i in product(s, repeat = 6):
    a = ''.join(i)
    if a[0] != '0' and len(a) == 6 and a[0] < a[2] and a[0] < a[3] and a[0] < a[4] and a[0] < a[5] and a[1] < a[2] and a[1] < a[3] and a[1] < a[4] and a[1] < a[5] and '000' not in a and '222' not in a and '444' not in a and '666' not in a:
        k += 1
print(k)

Выводит: 7156

Ответы

▲ 2

Ошибка в условии "запись числа не содержит трёх подряд идущих чётных цифр". Вы проверяете комбинации из трёх подряд одинаковых чисел, а они могут быть разными. Первое лишнее число в вашем решении 102232. Комбинация 022 недопустима.

Если регулярные выражения вас не пугают, можно решить задачу так:

from itertools import product
import re

c = 0
for p in product('01234567', repeat=6):
    # строка из цифр
    n = ''.join(p)

    # настоящие числа с нуля не начинаются
    if n[0] == '0':
        continue
    
    # "первые две цифры меньше всех оставшихся четырёх цифр"
    if max(n[:2]) >= min(n[2:]):
        continue

    # "не содержит трёх подряд идущих чётных цифр"
    if re.search('[0246]{3}', n) is not None:
        continue

    # print(n)
    c += 1

print(c)