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

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

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

Ре­ше­ние.

За­ме­тим, что чётных и нечётных цифр в вось­ме­рич­ной си­сте­ме счис­ле­ния 4 и 4 со­от­вет­ствен­но. Найдём ко­ли­че­ство пя­ти­знач­ных чисел, на­чи­на­ю­щих­ся с нечётной цифры: 4 · 4 · 3 · 3 · 2  =  288. Найдём ко­ли­че­ство пя­ти­знач­ных чисел, на­чи­на­ю­щих­ся с чётной цифры (при этом учтем, что число не может на­чи­нать­ся с нуля): 3 · 4 · 3 · 3 · 2  =  216. Таким об­ра­зом, по­лу­ча­ем ответ: 288 + 216  =  504.

 

Ответ: 504.

 

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

import itertools

alphabet = "01234567"

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

arl = []

for e in ar:

arl.append(list(e))

count = 0

for e in arl:

flag = True

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

if (e[0] == "0") or (int(e[i]) % 2 == 0 and int(e[i+1]) % 2 == 0) or (int(e[i]) % 2 != 0 and int(e[i+1]) % 2 != 0):

flag = False

if flag:

count += 1

print(count)

 

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

from itertools import permutations

s = permutations('01234567', 5)

k = 0

for i in s:

if i[0] != '0':

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 int(i[3])%2 != int(i[4])%2:

k += 1

print(k)

 

При­ведём ре­ше­ние Сер­гея Донец на PascalABC.NET:

begin

'01234567'.Permutations(5) // 8-рич­ная 5-знач­ных

.Where(s->s[1] <> '0') // Пер­вой циф­рой не может быть 0

.Where(s->not s.IsMatch('[0246][0246]')) //не две чётные цифры рядом

.Where(s->not s.IsMatch('[1357][1357]')) //не две нечётные цифры рядом

.Count.Print;//504

end.

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