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

Тек­сто­вый файл со­сто­ит из сим­во­лов A, B и C.

Опре­де­ли­те мак­си­маль­ное ко­ли­че­ство иду­щих под­ряд пар сим­во­лов AB или CB в при­ла­га­е­мом файле.

Ис­ко­мая под­по­сле­до­ва­тель­ность долж­на со­сто­ять толь­ко из пар AB, или толь­ко из пар CB, или толь­ко из пар AB и CB в про­из­воль­ном по­ряд­ке сле­до­ва­ния этих пар.

Для вы­пол­не­ния этого за­да­ния сле­ду­ет на­пи­сать про­грам­му.

24.txt

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

Ре­ше­ние.

Для ре­ше­ния дан­ной за­да­чи счи­та­ем всю стро­ку в пе­ре­мен­ную s. За­ме­тим, что, ис­хо­дя из усло­вия, все пары CB можно за­ме­нить на AB, либо, на­о­бо­рот, все пары AB за­ме­нить на CB. Далее пе­ре­бо­ром найдём наи­боль­шую длину по­сле­до­ва­тель­но­сти пар AB, встре­ча­ю­щу­ю­ся в стро­ке s.

 

При­ведём ре­ше­ние дан­ной за­да­чи на языке Pascal.

var

s: string;

i, count, maxCount: integer;

begin

assign(input, 'C:\24.txt');

readln(s);

count:=0;

maxCount:=0;

s := s.Replace('CB', 'AB');

for i:=1 to 100 do

if s.Contains('AB' * i) then begin

maxCount := i;

end;

writeln(maxCount);

end.

 

В ре­зуль­та­те ра­бо­ты дан­но­го ал­го­рит­ма при вводе дан­ных из файла в усло­вии по­лу­ча­ем ответ  — 65.

 

Ответ: 65.

 

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

f = open('24.txt')

n=f.read()

n=n.replace('AB','x')

n=n.replace('CB','x')

k=0

m=0

for i in range(len(n)):

if n[i]=='x':

k+=1

m=max(m,k)

else:

k=0

print(m)

 

При­ме­ча­ние. Путь к файлу не­об­хо­ди­мо ука­зать со­глас­но рас­по­ло­же­нию файла на Вашем ком­пью­те­ре.

 

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

f = open('107_24.txt').readline()

f = f.replace('CB', '*')

f = f.replace('AB', '*')

f = f.replace('A', ' ')

f = f.replace('B', ' ')

f = f.replace('C', ' ')

a = f.split()

print(len(max(a,key=len)))

 

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

f = open('107_24.txt').readline()

maxi = 0

cnt = 0

i = 0

while i<(len(f)-1):

if (f[i]=='A' or f[i]=='C') and f[i+1]=='B':

cnt += 1

i +=2

else:

maxi = max(maxi,cnt)

i += 1

cnt=0

print(maxi)

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