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

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

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

Ре­ше­ние.

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

Если пер­вая цифра числа чет­ная, то име­ет­ся 3 спо­со­ба её вы­брать (цифра 2, 4 или 6). Вто­рая цифра может быть одной из цифр 3, 5 или 7 - т. е. три ва­ри­ан­та. Для тре­тьей цифры име­ет­ся три ва­ри­ан­та вы­бо­ра (цифру на пер­вом месте мы вы­би­рать не можем, но можем вы­брать цифру 0). Для чет­вер­той цифры - два ва­ри­ан­та, для пятой - также два. Итого 3*3*3*2*2=108 чисел.

Если пер­вая цифра нечётная, то име­ет­ся три спо­со­ба вы­бо­ра (3, 5 или 7). Вто­рую цифру можно вы­брать че­тырь­мя спо­со­ба­ми (все чётные цифры). Тре­тью цифру - двумя спо­со­ба­ми, четвёртую - тремя и пятую - одним. Итого 3*4*2*3*1=72 ва­ри­ан­та.

Всего име­ет­ся 108+72=180 раз­лич­ных чисел.

 

 

 

 

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

s = '01234567'

count = 0

for a in '1234567':

for b in s:

for c in s:

for d in s:

for e in s:

r = a + b + c + d + e

if r.count('1') < 1 and r.count('0') <= 1 and r.count('2') <= 1 and \

r.count('3') <= 1 and r.count('4') <= 1 and r.count('5') <= 1 and \

r.count('6') <= 1 and r.count('7') <= 1 and \

r.count('00') == r.count('22') == r.count('44') == r.count('66') == 0 and \

r.count('02') == r.count('20') == r.count('04') == r.count('40') == 0 and \

r.count('06') == r.count('60') == r.count('24') == r.count('42') == 0 and \

r.count('46') == r.count('64') == r.count('26') == r.count('62') == 0 and \

r.count('33') == r.count('55') == r.count('77') == r.count('35') == 0 and \

r.count('53') == r.count('37') == r.count('73') == r.count('57') == 0 and \

r.count('75') == 0:

count += 1

print(count)

 

Ответ: 180.

 

 

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

from itertools import permutations

def good(s):

return s[0]!='0' and all([(s[i] in '357')!=(s[i+1] in '357') for i in range(len(s)-1)])

print(len([p for p in permutations('0234567',5) if good(p)]))

 

При­ведём ре­ше­ние Вик­то­рии Зи­бе­ро­вы на языке Python.

count = 0

for num in range(4096,32768):

r=oct(num)[2:]

if r.count('1') == 0:

for c in range (len(r)-1):

if (int(r[c])%2)==(int(r[c+1])%2) or r.count(r[c]) > 1:

break

if c == len(r)-2:

count += 1

print(count)

 

При­ведём ре­ше­ние Софии Ра­за­е­вой на языке Python.

from itertools import *

k = 0

c1 = '0246'

c2 = '1357'

for p in permutations('0234567', 5):

s = ''.join(p)

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

if s[i] in c1 and s[i+1] in c1 or s[i] in c2 and s[i+1] in c2:

break

else:

if s[0] != '0':

k += 1

print(k)

 

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

from itertools import*

k=0

for x in permutations('0234567',r = 5):

if x[0]!='0':

s=''.join(x)

s = s.replace('5','3').replace('7','3')

s = s.replace('2','0').replace('4','0').replace('6','0')

if '33' not in s and '00' not in s:

k+=1

print(k)

 

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

begin

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

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

.Where(s->'1' not in s)

.Where(s->not s.IsMatch('[0246][0246]'))

.Where(s->not s.IsMatch('[1357][1357]'))

.Count.Print;

end.

Источник: Де­мон­стра­ци­он­ная вер­сия ЕГЭ−2024 по ин­фор­ма­ти­ке