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

Опре­де­ли­те ко­ли­че­ство че­ты­рех­знач­ных чисел, за­пи­сан­ных в де­ся­тич­ной си­сте­ме счис­ле­ния, в за­пи­си ко­то­рых все цифры раз­лич­ны и ни­ка­кие две чётные и две нечётные цифры не стоят рядом.

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

Ре­ше­ние.

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

По­сколь­ку не­чет­ные и чет­ные цифры не могут сто­ять рядом, то число может быть либо вида ЧНЧН, либо НЧНЧ (Н  — не­чет­ная цифра, Ч  — чётная). Рас­смот­рим оба слу­чая.

1.  Если пер­вая цифра чётная, то у нас че­ты­ре кан­ди­да­та (число не может на­чи­нать­ся с нуля). На тре­тьем месте может сто­ять любая из остав­ших­ся четырёх цифр. На вто­ром месте  — любая не­чет­ная цифра из пяти, на четвёртом  — любая из остав­ших­ся четырёх. Всего 4 · 5 · 4 · 4  =  320 чисел.

2.  Если пер­вая цифра не­чет­ная, то это любая цифра из пяти. На тре­тьем месте любая цифра из остав­ших­ся четырёх. Ана­ло­гич­но на вто­ром месте любая из пяти чётных цифр, на четвёртом  — любая из остав­ших­ся четырёх. Всего 5 · 5 · 4 · 4  =  400 чисел.

Итого 320 + 400  =  720 чисел.

 

При­ведём ре­ше­ние на языке Python.

import itertools

alphabet = "0123456789"

cet = "02468"

necet = "13579"

ar = itertools.permutations(alphabet, 4) #Раз­ме­ще­ние

arl = []

for e in ar:

arl.append(e)

count = 0

for e in arl:

flag = True

for i in range(len(e)-1):

if (e[i] in cet and e[i+1] in cet) or (e[i] in necet and e[i+1] in necet) or e[0] == '0':

flag = False

if flag:

count += 1

print(count)

 

Ответ: 720.

 

При­ведём ре­ше­ние Ми­ха­и­ла Глин­ско­го на языке Python.

k=0

for x in range(1000,10000):

s=str(x)

sp={s[0],s[1],s[2],s[3]}

a1='13579'

a0='02468'

fl=True

for x in range(3):

if s[x] in a1 and s[x+1] in a1 or s[x] in a0 and s[x+1] in a0:

fl=False

if len(sp)==4 and fl==True: k+=1

print(k)

 

При­ведём ре­ше­ние Ильи Ан­дри­а­но­ва на языке Python.

from itertools import permutations

count = 0

for s in permutations('0123456789', 4):

num = ''.join(s)

if num[0] != '0':

num = num.replace('0', '2').replace('4', '2').replace('6', '2').replace('8', '2')

num = num.replace('3', '1').replace('5', '1').replace('7', '1').replace('9', '1')

if '11' not in num and '22' not in num:

count += 1

print(count)

 

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

from itertools import permutations

def good(p):

return p[0] != '0' and all([int(p[i])%2!=int(p[i+1])%2 for i in range(len(p)-1)])

 

print(len([p for p in permutations('0123456789',4) if good(p)]))

 

При­ведём ре­ше­ние Ар­сла­на Му­ха­ме­до­ва (Ка­зань) на языке Python.

from itertools import *

x = permutations('0123456789', 4)

count = 0

for i in x:

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 i[0] != '0':

count += 1

print(count)

 

При­ведём ре­ше­ние Алек­сандра Коз­ло­ва на языке Python.

k = 0

for a in '2468':

for b in '13579':

for c in '02468':

for d in '13579':

s = a+b+c+d

if a != c and b != d:

k += 1

for a in '13579':

for b in '02468':

for c in '13579':

for d in '02468':

s = a+b+c+d

if a != c and b != d:

k += 1

print(k)

 

При­ведём ре­ше­ние Егора Чер­не­цо­ва на языке Python.

print(sum(1 for n in range(1000,10000) if len(set(s:=str(n)))==4 and all(int(s[i])%2 != int(s[i+1])%2 for i in range(3))))

 

При­ведём ре­ше­ние Сер­гея Донец на языке 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;

end.

Источник: ЕГЭ по ин­фор­ма­ти­ке 19.06.2023. Ос­нов­ная волна. Раз­ные го­ро­да