Игорь составляет пятизначные числа, используя цифры девятеричной системы счисления. Сколько различных чисел может составить Игорь, в которых только одна
Приведём аналитическое решение Юрия Красильникова.
Будем записывать возможные цифры числа в группу цифр в квадратных скобках.
1. Цифра 5 на первом месте. Число: [5] [02468] [01234678] [01234678] [01234678]
Количество чисел 1*5*8**3 = 2560
2. Цифра 5 на втором месте. Число: [2468] [5] [02468] [01234678] [01234678]
Количество чисел 4*1*5*8**2 = 1280
3. Цифра 5 на третьем месте. Число: [1234678] [02468] [5] [02468] [01234678]
Количество чисел 7*5*1*5*8 = 1400
4. Цифра 5 на четвертом месте. Количество чисел такое же, как и в предыдущем случае, т. е. 1400.
5. Цифра 5 на пятом месте. Число [1234678] [01234678] [01234678] [02468] [5]
Количество чисел 7*8**2*5*1 = 2240.
Всего чисел 2560+1280+2*1400+2240 = 8880.
Приведём решение на языке Python.
from itertools import product
count = 0
for p in product("012345678", repeat=5):
if p.count("5") == 1 and p[0]!="0":
i = p.index('5')
if i != 0 and i != 4:
if p[i - 1] not in '137' and p[i + 1] not in '137':
count+=1
elif i == 0:
if p[1] not in '137':
count+=1
elif i == 4:
if p[3] not in '137':
count += 1
print(count)
Ответ: 8880.
Приведём решение Николая Аксенова на языке Python.
from itertools import *
count = 0
t = ['51','53', '57', '15', '35', '75']
for i in product('012345678', repeat=5):
p = ''.join(i)
if p[0] != '0' and p.count('5') == 1 and all (not i in p for i in t):
count += 1
print(count)
Приведём решение Юрия Красильникова на языке Python.
from itertools import product
d8='012345678'
zapret = [c+'5' for c in d8 if int(c)%2==1] + ['5'+c for c in d8 if int(c)%2==1]
a=[''.join(p) for p in product(d8,repeat=5) if p[0]!='0' and p.count('5')==1]
print(len([x for x in a if all([not z in x for z in zapret])]))
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
'012345678'.Cartesian(5) // 9-ричная 5-значных
.Where(s->s[1] <> '0') // Первой цифрой не может быть 0
.Where(s->s.CountOf('5')=1) // только одна цифра 5 поэтому [137]
.Where(s->not s.IsMatch('[137][5]'))//рядом с 5 НЕ стоят нечётные цифры
.Where(s->not s.IsMatch('[5][137]'))//рядом с 5 НЕ стоят нечётные цифры
.Count.Print;
end.

