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

Игорь со­став­ля­ет пя­ти­знач­ные числа, ис­поль­зуя цифры де­вя­те­рич­ной си­сте­мы счис­ле­ния. Сколь­ко раз­лич­ных чисел может со­ста­вить Игорь, в ко­то­рых толь­ко одна цифра 5 и рядом с ней НЕ стоят нечётные цифры?

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

Ре­ше­ние.

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

Будем за­пи­сы­вать воз­мож­ные цифры числа в груп­пу цифр в квад­рат­ных скоб­ках.

1.  Цифра 5 на пер­вом месте. Число: [5] [02468] [01234678] [01234678] [01234678]

Ко­ли­че­ство чисел 1*5*8**3 = 2560

2.  Цифра 5 на вто­ром месте. Число: [2468] [5] [02468] [01234678] [01234678]

Ко­ли­че­ство чисел 4*1*5*8**2 = 1280

3.  Цифра 5 на тре­тьем месте. Число: [1234678] [02468] [5] [02468] [01234678]

Ко­ли­че­ство чисел 7*5*1*5*8 = 1400

4.  Цифра 5 на чет­вер­том месте. Ко­ли­че­ство чисел такое же, как и в преды­ду­щем слу­чае, т. е. 1400.

5.  Цифра 5 на пятом месте. Число [1234678] [01234678] [01234678] [02468] [5]

Ко­ли­че­ство чисел 7*8**2*5*1 = 2240.

 

Всего чисел 2560+1280+2*1400+2240 = 8880.

 

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

from itertools import product

count = 0

for p in product("012345678", repeat=5):

if p.count("5") == 1 and p[0]!="0":

i = p.index('5')

if i != 0 and i != 4:

if p[i - 1] not in '137' and p[i + 1] not in '137':

count+=1

elif i == 0:

if p[1] not in '137':

count+=1

elif i == 4:

if p[3] not in '137':

count += 1

print(count)

 

Ответ: 8880.

 

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

from itertools import *

count = 0

t = ['51','53', '57', '15', '35', '75']

for i in product('012345678', repeat=5):

p = ''.join(i)

if p[0] != '0' and p.count('5') == 1 and all (not i in p for i in t):

count += 1

print(count)

 

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

from itertools import product

d8='012345678'

zapret = [c+'5' for c in d8 if int(c)%2==1] + ['5'+c for c in d8 if int(c)%2==1]

a=[''.join(p) for p in product(d8,repeat=5) if p[0]!='0' and p.count('5')==1]

print(len([x for x in a if all([not z in x for z in zapret])]))

 

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

begin

'012345678'.Cartesian(5) // 9-рич­ная 5-знач­ных

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

.Where(s->s.CountOf('5')=1) // толь­ко одна цифра 5 по­это­му [137]

.Where(s->not s.IsMatch('[137][5]'))//рядом с 5 НЕ стоят нечётные цифры

.Where(s->not s.IsMatch('[5][137]'))//рядом с 5 НЕ стоят нечётные цифры

.Count.Print;

end.

Источник: ЕГЭ по ин­фор­ма­ти­ке 20.06.2023. Ос­нов­ная волна. Даль­ний Во­сток