Задание №24 ЕГЭ Информатика с ответом и решением
Ответ: G
Условие
Текстовый файл содержит только заглавные буквы латинского алфавита (ABC…Z). Определите символ, который чаще всего встречается в файле сразу после буквы A.
Например, в тексте ABCAABADDD после буквы A два раза стоит B, по одному разу — A и D. Для этого текста ответом будет B.
Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
Подсказки — как подойти к решению
- Файл содержит одну строку из заглавных латинских букв. Нужен символ, стоящий сразу после каждой буквы A, поэтому перебирай пары соседних символов и запоминай именно правый из них.
- Заведи массив счётчиков по числу букв алфавита и увеличивай счётчик символа, следующего за 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])
Типичные ошибки
- Похоже, считался символ, стоящий перед буквой A, а не после неё. Проверь индекс: при разборе пары нужен символ справа, то есть следующий по строке.
В тренажёре: подсказки по шагам, разбор твоей ошибки ИИ-репетитором (он не даёт готовый ответ), повторение ошибок по интервалам и общий прогресс. Все задания №24 по информатике