Все 5-буквенные слова, составленные из букв И,Н,Ф,А, записаны в алфавитном порядке. Вот начало списка:
1. ААААА
2. ААААИ
3. ААААН
4. ААААФ
5. АААИА
…..
Укажите количество слов, которые стоят между словами ИНАФФ и НФАИА(включая эти слова).
Решение руками:
Заменим буквы на цифры: А — 0, И — 1, Н — 2, Ф — 3.
Теперь запишем 5-буквенные слова в новом алфавите.
1. 00000
2. 00001
3. 00002
4. 00003
5. 00010
…..
Полученный ряд — числа в четверичной системе счисления, записанные по возрастанию. Тогда слово ИНАФФ в числовом алфавите будет иметь вид , а слово НФАИА
.
Переведем полученные значения в десятичную систему счисления:
Тогда получится, что между словами ИНАФФ и НФАИА находится слов (+1, так как учитываются оба этих слова).
Решение Python:
from itertools import *
c, res1, res2 = 0, 0, 0
for i in product(’АИНФ’, repeat = 5):
s = ’’.join(i)
c += 1
if s == ’ИНАФФ’:
res1 = c
if s == ’НФАИА’:
res2 = c
print(abs(res1 - res2) + 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(res1 - res2) + 1)