Задача к ЕГЭ по информатике на тему «подсчет количества слов/чисел» №1

Определите количество семизначных чисел, записанных в пятеричной системе счисления, в записи которых ровно три цифры 3, при этом никакая четная цифра не стоит рядом с цифрой 1.

Решение через циклы

s = ’01234’ # наше слово
m = [’12’, ’21’, ’10’, ’01’, ’14’, ’41’] # запрещенные комбинации, где 1 рядом с чётной цифрой

k = 0 # итоговый счётчик
for a in ’1234’: # перебор для первого места без 0
    for b in s:
        for c in s:
            for d in s:
                for e in s:
                    for f in s:
                        for g in s:
                            n = a+b+c+d+e+f+g # формируем слово
                            # если в числе цифр 3 ровно 3 штуки, а также, что ни одна запрещенная комбинация не находится в слове
                            if n.count(’3’) == 3 and all(n.count(i) == 0 for i in m):
                                k += 1

print(k) # вывод ответа

Решение через itertools

from itertools import product # импортируем product из модуля itertools.
count = 0 # итоговый счётчик
m = [’12’, ’21’, ’10’, ’01’, ’14’, ’41’] # запрещенные комбинации, где 1 рядом с чётной цифрой
for x in product(’01234’,repeat = 7):
    s = ’’.join(x) # формируем слово
    # если число не начинается с 0, а также цифр 3 ровно 3 штуки, а также, что ни одна запрещенная комбинация не находится в слове
    if s[0] != ’0’ and s.count(’3’) == 3 and all(i not in s for i in m):
        count += 1
print(count) # вывод ответа

Ответ: 3691
Оцените статью
Я решу все!