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

Все ше­сти­бук­вен­ные слова, со­став­лен­ные из букв M, A, Н, Г, У, C, T, за­пи­са­ны в ал­фа­вит­ном по­ряд­ке и про­ну­ме­ро­ва­ны.

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

1.  AAAAAA

2.  AAAAAГ

3.  AAAAAM

4.  AAAAAH

5.  AAAAAC

6.  AAAAAT

7.  АААА­АУ

...

 

Под каким но­ме­ром в спис­ке стоит по­след­нее слово, ко­то­рое не на­чи­на­ет­ся с буквы У, со­дер­жит толь­ко две буквы M и нe более одной буквы Г.

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

Ре­ше­ние.

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

Пе­ре­пи­сы­ва­ем слово МАН­ГУСТ в ал­фа­вит­ном по­ряд­ке – АГ­МН­СТУ и ко­ди­ру­ем каж­дую букву со­от­вет­ству­ю­щей циф­рой по по­ряд­ку – 0123456. Пе­ре­фор­му­ли­ру­ем усло­вие для се­ме­рич­ной си­сте­мы счис­ле­ния - найти по­след­нее слово (мак­си­маль­ное число), на­чи­на­ю­ще­е­ся с пя­тер­ки и со­дер­жа­щее толь­ко две двой­ки и одну или не одной еди­ни­цы. По­лу­ча­ем два зна­че­ния «566221» и «566622». Мак­си­маль­ным будет код 566622, с уче­том того что номер стро­ки на еди­ни­цу боль­ше его се­ме­рич­но­го кода не за­бу­дем после его пе­ре­во­да в де­ся­тич­ное число до­ба­вить еди­ни­цу.

 

Оста­ет­ся вы­чис­лить вы­ра­же­ние: ( 5 · 75 + 6 · 74 +6 · 73 +6 · 72 + 2 · 71 +2 · 70)+1.

При­ве­дем код на Python:

print(5*7**5 + 6*7**4 + 6*7**3 + 6*7**2 + 2*7**1 + 2*7**0 + 1)

или:

print(int(str(566622),7)+1)

или:

print(int('566622',7)+1)

 

 

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

from itertools import product

count = 0

m=[]

for p in product(sorted("МАН­ГУСТ"), repeat=6):

count+=1

if p.count("М") == 2 and p[0]!="У" and p.count("Г") <=1:

m.append(count)

print(max(m))

 

Ответ: 100810.

 

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

a = {0: "А", 1: "Г", 2: "М", 3: "Н", 4: "С", 5: "Т", 6: "У"}

k = 0

maxi=[]

for i in range(0, len(a)):

for j in range(0, len(a)):

for g in range(0, len(a)):

for m in range(0, len(a)):

for n in range(0, len(a)):

for t in range(0, len(a)):

s = a[i] + a[j] + a[g] + a[m] + a[n] + a[t]

k += 1

if a[i] != 'У' and s.count('М') == 2 and s.count('Г') < 1:

maxi.append(k)

print(max(maxi))

 

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

def five(x):

s = ''

while x:

s = str(x%7) + s

x = x//7

return s

for i in range(int('666666',7),int('500000',7),-1):

s = five(i-1)

if s[0]!= '6' and s.count('2') == 2 and s.count('1') <= 1:

print(i)

break

 

При­ведём про­грам­му Сер­гея Донец на PascalABC:

begin

'МАН­ГУСТ'.Sorted.JoinToString // АГ­МН­СТУ в ал­фа­вит­ном по­ряд­ке

.Cartesian(6).Numerate // ну­ме­ра­ция

.Where(t->not t[1].isMatch('^У')) // не на­чи­на­ет­ся с буквы У

.Where(t->t[1].Matches('М').count=2) // Ровно две буквы М

.Where(t->t[1].Matches('Г').count<=1) // Не более одной буквы Г (0 или 1)

.Last // по­след­нее

.item1.print; // 100810

end.

Источник: ЕГЭ по ин­фор­ма­ти­ке 19.06.2023. Ос­нов­ная волна. Даль­ний Во­сток