Задания
Версия для печати и копирования в MS Word
Тип 8 № 79721
i

Сколь­ко су­ще­ству­ет де­ся­тич­ных четырёхзнач­ных чисел, в ко­то­рых все цифры раз­лич­ны и ни­ка­кие две чётные или две нечётные цифры не стоят рядом?

Спрятать решение

Ре­ше­ние.

При­ведём ана­ли­ти­че­ское ре­ше­ние Юрия Кра­силь­ни­ко­ва.

Пусть Н  — не­чет­ная цифра, Ч  — чет­ная. Число долж­но иметь вид либо НЧНЧ, либо ЧНЧН.

Чисел вида НЧНЧ 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.

Источник: ЕГЭ—2025. До­сроч­ная волна 08.04.2025. Ва­ри­ант ФИПИ