Задание 24. Программирование. Обработка строк. ЕГЭ 2024 по информатике
Средний процент выполнения: 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
Задача 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.