Игорь составляет пятизначные числа, используя цифры девятеричной системы счисления. Сколько различных чисел может составить Игорь, в которых ровно две
Приведём решение Галины Морозовой на языке Python.
from itertools import *
c=0
p=product('012345678', repeat=5)
for i in p:
s=''.join(i)
if s[0]!='0' and s.count('3')==2:
for j in s:
if j in '1357': s=s.replace(j,'*')
if '2*' not in s and '*2' not in s:
c+=1
print(c)
Ответ: 3352.
Приведём другое решение на языке Python.
from itertools import *
count = 0
w = ['12', '32', '52', '72', '21', '23', '25', '27']
for i in product('012345678', repeat=5):
s = ''.join(i)
if s[0] != '0' and s.count('3') == 2 and all (not i in s for i in w):
count += 1
print(count)
Приведём решение Ильи Андрианова на языке Python.
s = '012345678'
count = 0
for a in s:
for b in s:
for c in s:
for d in s:
for e in s:
temp = a + b + c + d + e
if temp[0] != '0' or a != '0':
if temp.count('3') == 2:
if all(x not in temp for x in '12 21 23 32 52 25 72 27'.split()):
count += 1
print(count)
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
'012345678'.Cartesian(5) // 9-ричная 5-значных
.Where(s->s[1] <> '0') // Первой цифрой не может быть 0
.Where(s->s.CountOf('3')=2) // ровно две цифры 3
.Where(s->not s.IsMatch('[1357][2]'))//рядом с 2 НЕ стоят нечётные цифры /слева
.Where(s->not s.IsMatch('[2][1357]'))//рядом с 2 НЕ стоят нечётные цифры /справа
.Count.Print;
end.

