Бесплатный интенсив по информатике

3 огненных вебинара, домашние задания, беседа курса, личный кабинет, связь с преподавателем и многое другое.
Курс стартует 23 июля.

Подробнее об интенсиве

Задание 24. Программирование. Обработка строк. ЕГЭ 2024 по информатике

За это задание ты можешь получить 1 балл. На решение дается около 30 минут. Уровень сложности: повышенный.
Средний процент выполнения: 52.2%
Ответом к заданию 24 по информатике может быть развернутый ответ (полная запись решения с обоснованием выполненных действий).
Разбор сложных заданий в тг-канале

Задачи для практики

Задача 1

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

Определите максимальное количество символов последовательности в прилагаемом файле, среди которых нет пар символов BD или среди которых нет пар BA. только один вид из этих пар может присутствовать в подпоследовательности.

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

Решение

Для решения этого номера нужно написать программу, приведём пример решения на языке Python

f = open('24_ABD.txt', 'r')
s = f.readline().strip()
s1 = s.replace('BD', 'B D')
s2 = s.replace('BA', 'B A')
x = s1.split()
y = s1.split()
max_not_bd = len(max(x, key=len))
max_not_ba = len(max(y, key=len))
print(max(max_not_ba, max_not_bd))

Другой способ решения

f = open('24_ABD.txt', 'r')
s = f.readline().strip()
max_len = 0
cur_len_notBA = 1
cur_len_notBD = 1
for i in range(len(s) - 1):
    if s[i] == 'B' and s[i + 1] == 'A':
        cur_len_notBA = 1
        cur_len_notBD += 1
    elif s[i] == 'B' and s[i + 1] == 'D':
        cur_len_notBA += 1
        cur_len_notBD = 1
    else:
        cur_len_notBA += 1
        cur_len_notBD += 1
    max_len = max(max_len, cur_len_notBA, cur_len_notBD)
print(max_len)

Ответ: 96

Ответ: 96
Показать решение
Бесплатный интенсив

Задача 2

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

Определите самую длинную последовательность символов в которой нет символа B. В ответе запишите количество символов в такой последовательности.

Искомая подпоследовательность должна состоять только из символов А или D.

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

Решение

Для решения этого номера нужно написать программу, приведём пример решения на языке Python

f = open('24_ABD.txt', 'r')
s = f.readline().strip()
max_s = 0
k = 0
for i in range(len(s)):
    if s[i] != 'B':
        k += 1
        max_s = max(k, max_s)
    else:
        k = 0
print(max_s)

Другой способ решения:

f = open('24_ABD.txt', 'r')
s = f.readline().strip()
s = s.replace('B', ' ')
x = s.split()
print(len(max(x, key=len)))

Ответ: 12

Ответ:
Показать решение
Бесплатный интенсив

Задача 3

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

Определите каких пар символов BD или BA больше в прилагаемом файле.

В ответе укажите количество таких пар и саму пару, без пробелов. Например: 143BD

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

Решение

Для решения этого номера нужно написать программу, приведём пример решения на языке Python

f = open('24_4.txt', 'r')
s = f.readline().strip()
bd = s.count('BD')
ba = s.count('BA')
if bd > ba:
    print(f'{bd}BD')
else:
    print(f'{ba}BA')

Ответ: 1025593BD

Ответ:
Показать решение
Бесплатный интенсив

Задача 4

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

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

Искомая подпоследовательность должна состоять только из пар BA, или только из пар BD.

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

Решение

Для решения этого номера нужно написать программу, приведём пример решения на языке Python

f = open('24.txt', 'r')
s = f.readline().strip()
s = s.replace('BD', '1')
s = s.replace('BA', '2')
x1 = s.replace('A', '2')
x1 = x1.replace('B', '2')
x1 = x1.replace('D', '2')
x2 = s.replace('A', '1')
x2 = x2.replace('B', '1')
x2 = x2.replace('D', '1')
x = x1.split('2')
max_s = len(max(x, key=len))
x = x2.split('1')
max_s = max(max_s, len(max(x, key=len)))
print(max_s)

Ответ: 16

Ответ:
Показать решение
Бесплатный интенсив

Задача 5

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

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

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

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

Решение

Для решения этого номера нужно написать программу, приведём пример решения на языке Python

f = open('24.txt', 'r')
s = f.readline().strip()
s = s.replace('BD', '1')
s = s.replace('BA', '2')
s = s.replace('A', ' ')
s = s.replace('B', ' ')
s = s.replace('D', ' ')
x = s.split()
print(len(max(x, key=len)))

Ответ: 64

Ответ:
Показать решение
Бесплатный интенсив

Задача 6

ДЛЯ 2022

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

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

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

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

Решение

Для решения этого номера нужно написать программу, приведём пример решения на языке Python

f = open('24.txt', 'r')
s = f.readline().strip()
s = s.replace('BD', '1')
s = s.replace('BA', '2')
s = s.replace('A', ' ')
s = s.replace('B', ' ')
s = s.replace('D', ' ')
x = s.split()
print(len(max(x, key=len)))

ОТВЕТ: 64

Ответ:
Показать решение
Бесплатный интенсив

Задача 7

Скачайте текстовый файл, состоящий не более чем из $10^6$ символов A, B и C.

Определите длину самой длинной цепочки, в которой каждые два соседних символа различны.

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

Решение

Пример решения задачи на Python:

f = open("Задание 24 (ABC4).txt")

st = f.read()

f.close()

prev1 = "Z"

cur_len = 0

max_len = 0

for x in st:

if x != prev1 and prev1 != "Z":

cur_len += 1

if cur_len > max_len:

max_len = cur_len

else:

cur_len = 1

prev1 = x

print(max_len)

Для данного по условию файла программа должна вывести ответ 35.

Ответ:
Показать решение
Бесплатный интенсив

Задача 8

Скачайте текстовый файл, состоящий не более чем из $10^6$ символов A, B, C и D.

Определите длину самой длинной цепочки, состоящей из одинаковых символов.

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

Решение

Пример решения задачи на Python:

f = open("Задание 24 (ABCD3).txt")

st = f.read()

f.close()

prev1 = "Z"

cur_len = 0

max_len = 0

for x in st:

if x == prev1:

cur_len += 1

if cur_len > max_len:

max_len = cur_len

else:

cur_len = 1

prev1 = x

print(max_len)

Пример решения задачи на С++:

#include <iostream>
#include <fstream>

using namespace std;

int main() {
ifstream file("Задание 24 (ABCD3).txt");
if (file.is_open()){
string text;
file >> text;
int maxCount = 0, currentCount = 1;
for (int i = 1; i < text.length(); ++i) {
if (text[i - 1] == text[i]) {
currentCount += 1;
if (currentCount > maxCount)
maxCount = currentCount;
} else
currentCount = 1;
}
cout << maxCount;
} else {
cout << "File isn not opened.";
}
return 0;
}

Для данного по условию файла программа должна вывести ответ 10.

Ответ:
Показать решение
Бесплатный интенсив

Задача 9

Скачайте текстовый файл, состоящий не более чем из $10^6$ символов A, B, C и D.

Определите количество цепочек, состоящих из 4-х символов, где каждые 2 соседних символа различны.

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

Решение

Пример решения задачи на Python:

f = open("Задание 24 (ABCD2).txt")

st = f.read()

f.close()

count = 0

prev1 = "Z"

prev2 = "Z"

prev3 = "Z"

for x in st:

if (prev3 != "Z" and x != prev1 and

prev1 != prev2 and prev2 != prev3):

count += 1

prev3 = prev2

prev2 = prev1

prev1 = x

print(count)

Пример решения задачи на C++:

#include <iostream>
#include <fstream>

using namespace std;

int main() {
ifstream file("D:\\DOWNLOADS\\num3.txt");
int count = 0;
if (file.is_open()){
string text;
file >> text;
for (int i = 3; i < text.length(); ++i)
if ((text[i - 3] != text[i - 2])
&& (text[i - 2] != text[i - 1])
&& (text[i - 1] != text[i]))
count++;
cout << count;
} else cout << "File is not opened.";
return 0;
}

Для данного по условию файла программа должна вывести ответ 422169.

Ответ:
Показать решение
Бесплатный интенсив

Задача 10

Скачайте текстовый файл, состоящий не более чем из $10^6$ символов A, B и C.

Сколько раз в файле встречается последовательность "CAB"?.

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

Решение

Пример решения задачи на Python:

f = open("file.txt")
st = f.read()
f.close()
count = 0
prev1 = "Z"
prev2 = "Z"
for x in st:
if prev2 == "C" and prev1 == "A" and x == "B":
count += 1
prev2 = prev1
prev1 = x
print(count)

Пример решения задачи на C++:

#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream file("D:\\YandexDisk\\YandexDisk\\ДОКУМЕНТЫ\\РЕПЕТИТОР\\ТУРБОПОДГОТОВКА\\Файлы для задач\\№24\\Задание 24 (ABC1).txt");
if (file.is_open()){
string text;
file >> text;
int count = 0;
for (int i = 2; i < text.length(); ++i){
if (text[i - 2] == 'C' && text[i - 1] == 'A' && text[i] == 'B')
count++;
}
cout << count;
} else cout << "File is not opened.";
return 0;
}

Для данного по условию файла программа должна вывести ответ 37166.

Ответ:
Показать решение
Бесплатный интенсив

Задача 11

Скачайте текстовый файл, состоящий не более чем из $10^6$ прописных символов английского алфавита от A до Z.

Определите длину самой длинной цепочки, состоящей только из символов A, B и C.

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

Решение

Пример решения задачи на Python:

f = open("Задание 24 (AZ3).txt")

st = f.read()

f.close()

count = 0

Max = 0

for x in st:

if x in ["A", "B", "C"]:

count += 1

if count > Max:

Max = count

else:

count = 0

print(Max)

Для данного по условию файла программа должна вывести ответ 5.

Ответ:
Показать решение
Бесплатный интенсив

Задача 12

Скачайте текстовый файл, состоящий не более чем из $10^6$ прописных символов английского алфавита от A до Z.

Определите длину самой длинной цепочки, состоящей только из символов A, B и C.

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

Решение

Пример решения задачи на Python:

f = open("Задание 24 (AZ1).txt")

st = f.read()

f.close()

count = 0

Max = 0

for x in st:

if x in ["A", "B", "C"]:

count += 1

if count > Max:

Max = count

else:

count = 0

print(Max)

Для данного по условию файла программа должна вывести ответ 6.

Ответ:
Показать решение
Бесплатный интенсив

Задача 13

Скачайте текстовый файл, состоящий не более чем из $10^6$ символов A, B, C и D.

Определите количество цепочек длины 4, где все четыре символа различны.

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

Решение

Пример решения задачи на Python:

f = open("Задание 24 (ABCD3).txt")

st = f.read()

f.close()

count = 0

pred1_x = "Z"

pred2_x = "Z"

pred3_x = "Z"

for x in st:

if (x != pred1_x and x != pred2_x and

x != pred3_x and pred1_x != pred2_x and

pred1_x != pred3_x and pred2_x != pred3_x

and pred3_x != "Z"):

count += 1

pred3_x = pred2_x

pred2_x = pred1_x

pred1_x = x

print(count)

Пример решения задачи на C++:

#include <iostream>
#include <fstream>

using namespace std;

bool check(string text){
for (int i = 0; i < text.length() - 1; i++)
for (int j = i + 1; j < text.length(); j++)
if (text[i] == text[j])
return false;
return true;
}

int main() {
ifstream file("D:\\DOWNLOADS\\num4.txt");
int count = 0;
if (file.is_open()){
string text;
file >> text;
for (int i = 3; i < text.length(); ++i)
if ((text[i - 3] != text[i - 2])
&& (text[i - 3] != text[i - 1])
&& (text[i - 3] != text[i])
&& (text[i - 2] != text[i - 1])
&& (text[i - 2] != text[i])
&& (text[i - 1] != text[i]))
// if(check(text.substr(i - 4, 4)))
count++;
cout << count;
} else cout << "File is not opened.";
return 0;
}

Пояснение к коду на C++: реализовано два варианта решения:
1) через проверку различия каждого из 4 символов, окружающих текущий (с номером i)
2) через функцию проверки различия всех символов в подстроке. На вход подаётся строка, циклы производят перебор всех символов и, если хотя бы пара символов равны, функция возвращает false. В функции main вызов этой функции закомментирован.

Для данного по условию файла программа должна вывести ответ 93896.

Ответ:
Показать решение
Бесплатный интенсив

Задача 14

Скачайте текстовый файл, состоящий не более чем из $10^6$ символов A, B и C.

Определите количество цепочек-палиндромов длиной от 3 до 4 символов. Цепочка-палиндром - это такая цепочка, которая читается одинаково слева направо и справа налево.

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

Решение

Пример решения задачи на Python:

f = open("Задание 24 (ABC2).txt")

st = f.read()

palind_count = 0

pred1_x = "Z"

pred2_x = "Y"

pred3_x = "X"

for x in st:

if x == pred2_x:

palind_count += 1

if x == pred3_x and pred1_x == pred2_x:

palind_count += 1

pred3_x = pred2_x

pred2_x = pred1_x

pred1_x = x

print(palind_count)

f.close()

Пример решения задачи на С++:

#include <iostream>
#include <fstream>

using namespace std;

int main() {
ifstream file("D:\\DOWNLOADS\\num5.txt");
int count = 0;
if (file.is_open()){
string text;
file >> text;
for (int i = 3; i < text.length(); ++i){
if ((text[i - 3] == text[i])
&& (text[i - 2] == text[i - 1]))
count++;
if (text[i - 2] == text[i])
count++;
}
cout << count;
} else cout << "File is not opened.";
return 0;
}

Для данного по условию файла программа должна вывести ответ 445333.

Ответ:
Показать решение
Бесплатный интенсив

Задача 15

Скачайте текстовый файл, состоящий не более чем из $10^6$ символов A, B и C.

Определите количество символов в самой длинной "восходящей" цепочке. Назовём цепочку "восходящей", если в ней сначала идёт любое (>0) количество символов A, затем любое (>0) количество символов B, а потом любое (>0) количество символов C, например "AABBBBC".

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

Решение

Решение на Python:

f = open("file.txt")
max_len = 0
cur_len = 0
st = f.read()
pred_x = "X"
for x in st:
if ((x == pred_x and cur_len > 0) or
(x == "B" and pred_x == "A")
or (x == "C" and pred_x == "B" and cur_len > 0)):
cur_len += 1
else:
if x == "A":
cur_len = 1
else:
cur_len = 0
if x == "C" and cur_len > max_len:
max_len = cur_len
pred_x = x
print(max_len)
f.close()

Решение на С++:
Основано на том, что у каждого символа есть код и в восходящей цепочке у каждого следующего символа значение кода должно бытьт больше или рано коду предыдущего

#include <iostream>
#include <fstream>

using namespace std;

int main(){
ifstream file ("file.txt");
string text;
file >> text;
int maxLength = 0, curLength = 1;
for (int i = 1; i < text.length(); ++i) {
if (text[i-1] <= text[i]) {
curLength++;
if (curLength > maxLength)
maxLength = curLength;
} else
curLength = 1;
}
cout << maxLength;
return 0;
}

Для данного по условию файла программа должна вывести ответ 19.

Ответ:
Показать решение
Бесплатный интенсив

Задача 16

Скачайте текстовый файл, состоящий не более чем из $10^6$ символов A, B и C.

Определите количество символов в самой длинной "восходящей" цепочке. Назовём цепочку "восходящей", если в ней сначала идёт любое (>0) количество символов A, затем любое (>0) количество символов B, а потом любое (>0) количество символов C, например "AABBBBC".

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

Решение

Пример решения задачи на Python:

f = open("Задание 24 (ABC2).txt")

max_len = 0

cur_len = 0

st = f.read()

pred_x = "X"

for x in st:

if ((x == pred_x and cur_len > 0) or

(x == "B" and pred_x == "A")

or (x == "C" and pred_x == "B" and cur_len > 0)):

cur_len += 1

else:

if x == "A":

cur_len = 1

else:

cur_len = 0

if x == "C" and cur_len > max_len:

max_len = cur_len

pred_x = x

print(max_len)

f.close()

Для данного по условию файла программа должна вывести ответ 16.

Ответ:
Показать решение
Бесплатный интенсив

Задача 17

Скачайте текстовый файл, состоящий не более чем из $10^6$ символов A, B и C.

Определите количество символов в самой длинной "нисходящей" цепочке. Назовём цепочку "нисходящей", если в ней сначала идёт любое (>0) количество символов C, затем любое (>0) количество символов B, а потом любое (>0) количество символов А, например "CCBAAAAA".

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

Решение

Пример решения задачи на Python:

f = open("Задание 24 (ABC3).txt")

max_len = 0

cur_len = 0

st = f.read()

pred_x = "X"

for x in st:

if ((x == pred_x and cur_len > 0) or

(x == "B" and pred_x == "C")

or (x == "A" and pred_x == "B" and cur_len > 0)):

cur_len += 1

else:

if x == "C":

cur_len = 1

else:

cur_len = 0

if x == "A" and cur_len > max_len:

max_len = cur_len

pred_x = x

print(max_len)

f.close()

Для данного по условию файла программа должна вывести ответ 17.

Ответ:
Показать решение
Бесплатный интенсив
Показать еще
Подпишись на полезные материалы ЕГЭ по информатике: разбор реальных вариантов ЕГЭ и сложных заданий + авторские конспекты

Бесплатный интенсив по информатике

3 огненных вебинара, домашние задания, беседа курса, личный кабинет, связь с преподавателем и многое другое.
Курс стартует 23 июля.

Бесплатный интенсив