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

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

Восьмеричная система счисления содержит цифры: 0, 1, 2, 3, 4, 5, 6, 7. Существует шесть вариантов расстановки цифры 1.

1 * * * * * *

* 1 * * * * *

* * 1 * * * *

* * * 1 * * *

* * * * 1 * *

* * * * * 1 *

Также на первом месте не может стоять цифра 0, иначе полученное число будет шестизначное.

1 7 6 5 4 3 2 −→ 1*7*6*5*4*3*2=5040

6 1 6 5 4 3 2 −→ 6*1*6*5*4*3*2=4320

6 6 1 5 4 3 2 −→ 6*6*1*5*4*3*2=4320

6 6 5 1 4 3 2 −→ 6*6*5*1*4*3*2=4320

6 6 5 4 1 3 2 −→ 6*6*5*4*1*3*2=4320

6 6 5 4 3 1 2 −→ 6*6*5*4*3*1*2=4320

Итого получаем: 5040 + 5*4320 = 26640.

Решение программой (циклы):

ans = set()
alf = ’01234567’

for x1 in alf:
    for x2 in alf:
        for x3 in alf:
            for x4 in alf:
                for x5 in alf:
                    for x6 in alf:
                        for x7 in alf:
                            w = x1 + x2 + x3 + x4 + x5 + x6 + x7
                            if len(w) == len(set(w)):
                                if w.count(’1’) == 1 and w[-1] != ’1’ and w[0] != ’0’:
                                    ans.add(w)
print(len(ans))

Решение программой (itertools):

from itertools import permutations

ans = set()
alf = ’01234567’

for w in permutations(alf, 7):
    w = ’’.join(w)
    if w.count(’1’) == 1 and w[-1] != ’1’ and w[0] != ’0’:
        ans.add(w)
print(len(ans))

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