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

Тек­сто­вый файл со­дер­жит толь­ко за­глав­ные буквы ла­тин­ско­го ал­фа­ви­та (ABC...Z). Опре­де­ли­те мак­си­маль­ное ко­ли­че­ство иду­щих под­ряд сим­во­лов, среди ко­то­рых нет ни одной буквы A и при этом не менее трёх букв E.

Для вы­пол­не­ния этого за­да­ния сле­ду­ет на­пи­сать про­грам­му. Ниже при­ведён файл, ко­то­рый не­об­хо­ди­мо об­ра­бо­тать с по­мо­щью дан­но­го ал­го­рит­ма.

За­да­ние 24

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

Ре­ше­ние.

Для ре­ше­ния дан­ной за­да­чи будем по­сим­воль­но счи­ты­вать тек­сто­вый файл. Объ­явим пе­ре­мен­ную c, ко­то­рая будет хра­нить оче­ред­ной счи­тан­ный сим­вол. Далее объ­явим пе­ре­мен­ную countE, в ко­то­рой будем хра­нить число сим­во­лов E в те­ку­щей по­сле­до­ва­тель­но­сти. Также объ­явим пе­ре­мен­ные k и max. Пер­вая нужна для опре­де­ле­ния длины каж­дой по­сле­до­ва­тель­но­сти сим­во­лов, среди ко­то­рых нет сим­во­лов A, вто­рая  — для хра­не­ния мак­си­маль­ной длины такой по­сле­до­ва­тель­но­сти. Если будет встре­чен сим­вол A и пе­ре­мен­ная countE будет боль­ше двух, будет срав­ни­вать­ся те­ку­щая длина по­сле­до­ва­тель­но­сти со зна­че­ни­ем в пе­ре­мен­ной max. Если те­ку­щая длина боль­ше, пе­ре­мен­ная max пе­ре­за­пи­сы­ва­ет­ся.

 

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

var k, max, countE: integer;

c: char;

f: text;

begin

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

reset(f);

k := 0;

max := 0;

countE := 0;

while not Eof(f) do begin

read(f, c);

if (c = 'A') then begin

if countE > 2 then begin

if k > max then max := k;

end;

k := 0;

countE := 0;

end

else begin

if c = 'E' then countE := countE + 1;

k := k + 1;

end;

end;

if k > max then

max := k;

writeln(max);

end.

 

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

 

Ответ: 282.

 

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

 

При­ведём ре­ше­ние Кон­стан­ти­на Ду­бо­ва на языке Python.

with open('24.txt')as f:

l = f.readline()

count, mak = 0, 0

k = 0

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

if l[i] != 'A':

count += 1

if l[i] == 'A':

if count >= 3:

t = l[i - count: i]

u = 0

while "E" in t:

u += 1

t = t.replace('E', 'K', 1)

if u >= 3:

mak = max(mak, count)

count = 0

print(mak)

 

При­ведём ре­ше­ние Ни­ки­ты Со­ко­ло­ва на языке Python.

f = open('24.txt').readline()

s = f.split("A")

s = list(filter(lambda x: x.count('E') >= 3, s))

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

 

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

f = open('24.txt').readline()

cfl = fl = maxs = 0

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

if f[i] == "C":

cfl += 1

if (f[i] != "A") and (i != len(f)):

fl += 1

elif cfl >= 3:

maxs = max(fl, maxs)

fl = cfl = 0

else:

fl = cfl = 0

print(maxs)

 

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

s = open('242.txt').read()

maxi = 0

for i in range(0,len(s)-1):

for j in range(i+1,len(s)):

s1 = s[i:j+1]

if 'A' in s1: break

else:

if s1.count('E') > 2:

maxi = max(maxi,len(s1))

print(maxi)

 

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

print(len(max([i for i in open("24.txt").readline().split("A") if i.count("E") >= 3], key=len)))

 

 

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

f = open('24.txt').readline()

count=0

m = -1

count_e = 0

i=0

while i!=len(f):

if f[i] =='A':

if count_e>=3 and count>m:

m = count

count_e=0

count=0

elif f[i]=='E':

count_e += 1

count += 1

else:

count+=1

i+=1

print(m)


Аналоги к заданию № 40740: 40999 Все