Найдите количество пятизначных восьмеричных чисел, в которых все цифры различны и никакие две четные или нечетные не стоят рядом.
Заметим, что чётных и нечётных цифр в восьмеричной системе счисления
Ответ: 504.
Приведём решение на языке Python.
import itertools
alphabet = "01234567"
ar = itertools.permutations(alphabet, 5) #Размещение
arl = []
for e in ar:
arl.append(list(e))
count = 0
for e in arl:
flag = True
for i in range(len(e)-1):
if (e[0] == "0") or (int(e[i]) % 2 == 0 and int(e[i+1]) % 2 == 0) or (int(e[i]) % 2 != 0 and int(e[i+1]) % 2 != 0):
flag = False
if flag:
count += 1
print(count)
Приведём решение Бориса Савельева на языке Python.
from itertools import permutations
s = permutations('01234567', 5)
k = 0
for i in s:
if i[0] != '0':
if int(i[0])%2 != int(i[1])%2 and int(i[1])%2 != int(i[2])%2 and int(i[2])%2 != int(i[3])%2 and int(i[3])%2 != int(i[4])%2:
k += 1
print(k)
Приведём решение Сергея Донец на PascalABC.NET:
begin
'01234567'.Permutations(5) // 8-ричная 5-значных
.Where(s->s[1] <> '0') // Первой цифрой не может быть 0
.Where(s->not s.IsMatch('[0246][0246]')) //не две чётные цифры рядом
.Where(s->not s.IsMatch('[1357][1357]')) //не две нечётные цифры рядом
.Count.Print;//504
end.

