πЕГЭ · ИИ-репетитор12 предметов · задания ФИПИ
Главная → Информатика → Задания №24 → Задание i24-11

Задание №24 ЕГЭ Информатика с ответом и решением

Ответ: G

Условие

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

Например, в тексте ABCAABADDD после буквы A два раза стоит B, по одному разу — A и D. Для этого текста ответом будет B.

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

Подсказки — как подойти к решению

  1. Файл содержит одну строку из заглавных латинских букв. Нужен символ, стоящий сразу после каждой буквы A, поэтому перебирай пары соседних символов и запоминай именно правый из них.
  2. Заведи массив счётчиков по числу букв алфавита и увеличивай счётчик символа, следующего за A. Учти, что у самой последней буквы строки соседа справа нет — такую позицию пропускай.

Решение

Для решения этой задачи считаем строку из файла. Инициализируем строковую переменную s1 со значением ABCDEFGHIJKLMNOPQRSTUVWXYZ. Посимвольно перебирая строку из файла, каждый раз встречая букву A, будем вставлять в строку s1 символ, идущий после буквы A в считанной строке, таким образом, чтобы в строке s1 соответствующие символы стояли рядом друг с другом (например, если из файла была считана строка ABAB, строка s1 после выполнения алгоритма будет выглядеть так: ABBBCDEFGHIJKLMNOPQRSTUVWXYZ. После этого посчитаем длину самой длинной цепочки символов и таким образом получим ответ.

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

var

len, max, count: longint;

s, s1: string;

maxC: char;

f: text;

begin

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

reset(f);

readln(f, s);

len := length(s);

s1 := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

for i:integer := 1 to len do begin

if ((s[i] = 'A') and (i <> len)) then

s1 := s1.Substring(0, s1.LastIndexOf(s[i+1])) + s[i+1] + s1.Substring(s1.LastIndexOf(s[i+1]));

end;

len := length(s1);

max := 1;

count := 0;

for i:integer := 1 to len-1 do begin

if (s1[i] = s1[i+1]) then count := count + 1

else count := 0;

if count > max then begin

max := count;

maxC := s1[i];

end;

end;

writeln(maxC);

end.

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

var

len, max: longint;

maxC: char;

s: string;

arr: array ['A'..'Z'] of integer;

f: text;

begin

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

reset(f);

readln(f, s);

len := length(s);

for i:integer := 1 to len - 1 do begin

if (s[i] = 'A') then arr[s[i+1]] := arr[s[i+1]] + 1;

end;

max := 0;

for j:char := 'A' to 'Z' do begin

if arr[j] > max then begin

max := arr[j];

maxC := j;

end;

end;

writeln(maxC);

end.

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

Ответ: G.

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

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

f = open("24.txt")

s = f.readline()

a = [0] * 26

maxi = 0

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

if s[i] == 'A':

a[ord(s[i + 1]) - 65] += 1

for i in range(26):

if a[i] > maxi:

maxi = a[i]

index = i

print(chr(index + 65))

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

from collections import Counter

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

t=''

for i in range(len(f)-1):

if f[i]=='A':

t+=f[i+1]

print(Counter(t).most_common()[0][0])

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

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

j=''

for i in range(len(f)-1):

if f[i] == 'A':

j += f[i+1]

print(max(set(j),key = j.count))

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

a = open("24.txt").readline().strip()

d = "QWERTYUIOPASDFGHJKLZXCVBNM"

s = {}

s = s.fromkeys(d, 0)

for i in range(len(a)):

if a[i] == "A":

s[a[i+1]] = s[a[i+1]]+1

qa = []

for e in s.keys():

r = s.get(e)

qa.append(r)

for e in s.keys():

if max(qa) == s.get(e):

print(e)

Приведём решение Михаила Глинского на языке Python.

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

maxb=0

mm=''

for i in sorted('QWERTYUIOPASDFGHJKLZXCVBNM'):

if s.count('A'+i)>maxb:

mm=i

maxb=s.count('A'+i)

print(mm)

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

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

a = [s[i] for i in range(1,len(s)) if s[i-1]=='A']

m = max([a.count(c) for c in set(a)])

print(*[c for c in set(a) if a.count(c)==m])

Типичные ошибки

Решить это задание в тренажёре

В тренажёре: подсказки по шагам, разбор твоей ошибки ИИ-репетитором (он не даёт готовый ответ), повторение ошибок по интервалам и общий прогресс. Все задания №24 по информатике