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

Все пя­ти­бук­вен­ные слова, со­став­лен­ные из букв С, Т, Р, О, К, А, за­пи­са­ны в ал­фа­вит­ном по­ряд­ке и про­ну­ме­ро­ва­ны.

Вот на­ча­ло спис­ка:

1.  ААААА

2.  ААААК

3.  ААААО

4.  ААААР

5.  ААААС

6.  ААААТ

...

 

Опре­де­ли­те, под каким но­ме­ром в этом спис­ке стоит по­след­нее слово с чётным но­ме­ром, ко­то­рое не на­чи­на­ет­ся с букв А, С или Т и при этом со­дер­жит в своей за­пи­си ровно две буквы О.

При­ме­ча­ние. Слово  — по­сле­до­ва­тель­ность иду­щих под­ряд букв, не обя­за­тель­но осмыс­лен­ная.

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

Ре­ше­ние.

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

Пе­ре­пи­сы­ва­ем буквы за­дан­но­го слова в ал­фа­вит­ном по­ряд­ке  — «АКОРСТ».

Ко­ди­руя каж­дую букву в ше­сте­рич­ную си­сте­му счис­ле­ния, по­лу­ча­ем код 0123456. Со­глас­но усло­ви­ям, он не может на­чи­нать­ся с цифр 0, 5 и 6.

Кроме того, код дол­жен быть пя­ти­знач­ным и на­хо­дить­ся на по­след­нем месте, что под­ра­зу­ме­ва­ет, что это может быть толь­ко 35555.

Также учтем, что в коде долж­но быть ровно две буквы О, то есть два числа 2. Это при­во­дит нас к вы­во­ду, что ко­до­вое слово не может пре­вы­шать 35522.

Ана­ли­зи­руя первую стро­ку ше­сте­рич­но­го кода 00000 с но­ме­ром 1 в де­ся­тич­ной си­сте­ме счис­ле­ния, мы по­ни­ма­ем, что для пре­об­ра­зо­ва­ния кода стро­ки в её номер не­об­хо­ди­мо до­ба­вить еди­ни­цу.

Таким об­ра­зом, чтобы по­лу­чить мак­си­маль­ный номер стро­ки, можно на­пи­сать про­грам­му на Python: print(int('35522', 6) + 1), за­пу­стив ко­то­рую, по­лу­чим не­чет­ное число 5163, од­на­ко по усло­вию номер дол­жен быть чет­ным.

Пе­ре­ста­нов­кой двоек и пя­те­рок мы на­хо­дим нуж­ный номер:

print(int('35252',6) + 1). Ре­зуль­тат  — 5073.

print(int('35225',6) + 1). Ре­зуль­тат  — 5058.

print(int('32255',6)+1). Ре­зуль­тат  — 4428.

Ис­сле­дуя ре­зуль­та­ты при­хо­дим к вы­во­ду, что нам под­хо­дит толь­ко 5058.

 

 

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

from itertools import product

count = 0

sp = []

for s in product(sorted("СТРО­КА"), repeat = 5):

count += 1

if count % 2 == 0 and s.count("О") == 2 and s[0] not in ('АСТ'):

sp.append(count)

print(max(sp))

 

Ответ: 5058.

 

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

alf = 'АКОРСТ'

count = 0

otv = []

for x1 in alf:

for x2 in alf:

for x3 in alf:

for x4 in alf:

for x5 in alf:

s = x1+x2+x3+x4+x5

count += 1

if count % 2 == 0 and s.count("О") == 2 and s[0] not in ('АСТ'):

otv.append(count)

print(max(otv))

 

Ответ: 5058.

 

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

from itertools import product

sp = []

for s in product('012345', repeat = 5):

p = (''.join(s))

if (int(p,6)+1)%2 == 0 and s.count('2') == 2 and s[0] not in ('045'):

sp.append(int(p,6)+1)

print(max(sp))

 

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

def f(x):

s = ''

while x:

s = str(x%6)+s

x = x//6

return s

 

for i in range(int('35522',6),0,-1):

if (int(str(f(i)),6)+1)%2 == 0 and str(f(i)).count('2') == 2 and str(f(i)).count('5') == 2:

print(i+1)

break

 

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

from itertools import product

sp = [int(p, 6) + 1 for p in (''.join(s) for s in product('35522', repeat=5)) \

if (int(p, 6) + 1) % 2 == 0 and p.count('2') == 2 and p.count('5') == 2 and p[0] == '3']

print(max(sp))

 

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

begin

'СТРО­КА'.ToCharArray.Order.JoinToString // 'АКОРСТ'

.CartesianPower(5).Numerate

.Where(\(n,s) -> (n mod 2 = 0)) // Чет­ный номер

.Where(\(n,s) -> s[1] not in 'АСТ') // Не на­чи­на­ет­ся на А, С, Т

.Where(\(n,s) -> s.CountOf('О') = 2) // Ровно две буквы О

.Last

.Print;

end.

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