Все 5-буквенные слова, в составе которых могут быть буквы К, А, М, Е, О записаны в определённом порядке и пронумерованы, начиная с 1. Ниже приведено начало списка.
1. ККККК
2. ККККА
3. ККККМ
4. ККККЕ
5. ККККО
6. КККАК
…
Сколько слов, оканчивающихся на ОМ, между словами «КОМОК» и «ЕМКОМ»?
Решение Python:
flag = 0
counter = 0
for a1 in (’КАМЕО’):
for a2 in (’КАМЕО’):
for a3 in (’КАМЕО’):
for a4 in (’КАМЕО’):
for a5 in (’КАМЕО’):
s = a1 + a2 + a3 + a4 + a5
if s == ’КОМОК’:
flag = 1
if s == ’ЕМКОМ’:
flag = 0
counter += flag * (s[-2] + s[-1]) == ’ОМ’
print(counter)
Решение руками:
Преобразуем буквы в пятеричную систему счисления: К — 0, А — 1, М — 2, Е — 3, О — 4.
То есть нам нужно найти количество слов, оканчивающихся на .
Выпишем подходящие слова по порядке:
1. 04242
2. 04342
…
n. 31442.
Значит, нам нужно количество чисел от до
:
.
Решение Python:
from itertools import *
t = product(’КАМЕО’, repeat = 5)
c, f = 0, 0
for i in t:
s = ’’.join(i)
if s == ’КОМОК’:
f = 1
if s == ’ЕМКОМ’:
f = 0
c += f * ((s[-2] + s[-1]) == ’ОМ’)
print(c)