Вероника составляет 3-буквенные коды из букв В, Е, Р, О, Н, И, К, А, причём буква В должна входить в код ровно один раз. Все полученные коды Вероника записала в алфавитном порядке и пронумеровала. Начало списка выглядит так:
1. ААВ
2. АВА
3. АВЕ
...
На каком месте будет записан первый код, не содержащий ни одной
Запишем каждую букву и соответствующую ей цифру: А — 0, В — 1, Е — 2, И — 3, К — 4, Н — 5, О — 6, Р — 7. Продолжим список кодов, пока не встретим код, не содержащий
1 — 001
2 — 010
3 — 012
4 — 013
5 — 014
6 — 015
7 — 016
8 — 017
9 — 021
10 — 031
11 — 041
12 — 051
13 — 061
14 — 071
15 — 100
16 — 102
17 — 103
18 — 104
19 — 105
20 — 106
21 — 107
22 — 120
23 — 122
Таким образом, первый код, не содержащий ни одной
Ответ: 23.
Приведём другое решение на языке Python.
a = {0: "А", 1: "В", 2: "Е", 3: "И", 4: "К", 5: "Н", 6: "О", 7: "Р"}
k = 0
for i in range(0, len(a)):
for j in range(0, len(a)):
for g in range(0, len(a)):
s = a[i] + a[j] + a[g]
if s.count('В') == 1:
k += 1
if s.count('А') == 0:
print(k) # Возьмём первое число, которое выдаст программа
break
Приведём решение Бориса Савельева на языке Python.
from itertools import product
s = product('АВЕ*****', repeat = 3)
cnt = 0
for i in s :
p = ''.join(i)
if p.count('В') == 1:
cnt += 1
if p.count('В') == 1 and p.count('А') == 0:
print(cnt)
break
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
('ВЕРОНИКА'.CartesianPower(3) // Все 3-буквенные перестановки
.Select(p -> p.JoinToString())
.Where(s -> s.CountOf('В') = 1) // Буква В ровно один раз
.Sorted // Алфавитный порядок
.ToArray
.FindIndex(s -> not s.Contains('А'))+1)
.Print;//23
end.

