Сколько существует десятичных четырёхзначных чисел, в которых все цифры различны и никакие две чётные или две нечётные цифры не стоят рядом?
Приведём аналитическое решение Юрия Красильникова.
Пусть Н — нечетная цифра, Ч — четная. Число должно иметь вид либо НЧНЧ, либо ЧНЧН.
Чисел вида НЧНЧ 5 · 5 · 4 · 4 = 400 (учитываем, что все цифры различны, в частности, для первой цифры имеем пять вариантов, а для третьей — лишь четыре).
Чисел вида ЧНЧН 4 · 5 · 4 · 4 = 320. (Первая цифра не может быть нулем.)
Всего чисел 400 + 320 = 720.
Приведём решение на языке Python.
from itertools import product
count = 0
for i in product('0123456789', repeat=4):
if len(set(i)) == 4 and i[0] != '0':
if all(int(a) % 2 != int(b) % 2 for a, b in zip(i, i[1:])):
count += 1
print(count)
Ответ: 720.
Приведём решение Александры Ивановой на языке Python.
from itertools import *
count = 0
for x in product('0123456789', repeat =4):
if len(set(x))==4 and x[0]!='0':
x = ''.join(x)
x=x.replace('0', '*').replace('2', '*').replace('4', '*').replace('6', '*').replace('8', '*')
x=x.replace('1', '+').replace('3', '+').replace('5', '+').replace('7', '+').replace('9', '+')
if ('++' not in x) and ('**' not in x):
count += 1
print(count)
Приведём решение Харитоненковой Варвары на языке Python.
from itertools import *
count = 0
for i in permutations('0123456789', r = 4):
s = ''.join(i)
if s[0]!="0":
s = s.replace('0','*').replace('2','*').replace('4','*').replace('6','*').replace('8','*')
s = s.replace('1','!').replace('3','!').replace('5','!').replace('7','!').replace('9','!')
if ('**' not in s) and ('!!' not in s):
count += 1
print(count)
Приведём решение Бориса Савельева на языке Python.
from itertools import permutations
s=permutations('0123456789', 4)
k=0
for i in s:
p=''.join(i)
if p[0]!='0':
if int(p[0])%2!=int(p[1])%2 and int(p[1])%2!=int(p[2])%2 and int(p[2])%2!=int(p[3])%2:
k+=1
print(k)
Приведём решение Александра Козлова на языке Python.
count = 0
for a in '2468':
for b in '13579':
for c in '02468':
for d in '13579':
if a!=c and b!=d:
count+=1
for a in '13579':
for b in '02468':
for c in '13579':
for d in '02468':
if a!=c and b!=d:
count+=1
print(count)
Приведём решение Александра Козлова на языке Python.
patterns = [('2468','13579','02468','13579'), ('13579','02468','13579','02468')]
print(sum(1 for p in patterns for a in p[0] for b in p[1] for c in p[2] for d in p[3] if a!=c and b!=d))
Приведём решение Юрия Красильникова на языке Python.
def good(s):
return len(set(s))==4 and sum([(s[i] in '13579') != (s[i+1] in '13579') for i in range(3)])==3
print(len([n for n in range(1000,10000) if good(str(n))]))
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
'0123456789'.Permutations(4)//10-чная 4-значных
.Where(s->s[1] <> '0')// Первой цифрой не может быть 0
.Where(s->not s.IsMatch('[02468][02468]'))//никакие две чётные цифры не стоят рядом
.Where(s->not s.IsMatch('[13579][13579]'))//никакие две нечётные цифры не стоят рядом
.Count.Print;//720
end.

