Все пятибуквенные слова, составленные из букв Б, О, Р, записаны в алфавитном порядке и пронумерованы, начиная с 1. Ниже приведено начало списка:
- БББББ
- ББББО
- ББББР
-
БББОБ
….
Укажите количество слов, стоящих между словами ОБРОБ и РОББР (не включая данные слова)
Решение руками:
Заменим буквы на цифры: Б — 0, О — 1, Р — 2. Получим новый список:
- 00000
- 00001
- 00002
-
00010
….
Полученный список — числа в троичной системе счисления, записанные по возрастанию. Слово ОБРОБ в списке будет иметь номер , а слово РОББР —
. Переведем полученные значения в десятичную систему счисления:
=
,
=
. Между словамм ОБРОБ и РОББР стоит 191-102-1=88 слов (-1 так как оба слова по условию не учитываются).
Решение Python:
from itertools import *
c = 0
res1 = 0
res2 = 0
for i in product(’БОР’, repeat = 5):
s = ’’.join(i)
c += 1
if s == ’ОБРОБ’:
res1 = c
if s == ’РОББР’:
res2 = c
print(abs(res2 - res1) - 1)
Решение Python:
alf = ’БОР’
c, res1, res2 = 0, 0, 0
for i in alf:
for j in alf:
for k in alf:
for l in alf:
for m in alf:
s = i + j + k + l + m
c += 1
if s == ’ОБРОБ’:
res1 = c
if s == ’РОББР’:
res2 = c
print(abs(res2 - res1) - 1)