Программное решение задач ЕГЭ по информатике

Задача 6554. Источник: Поляков. Задание КИМ 24

Страница задачи 6554

(А. Богданов) Текстовый файл 24-260.txt состоит не более чем из 106 символов и содержит только буквы латинского алфавита и десятичные цифры. Определите максимальное количество идущих подряд символов, среди которых нет рядом стоящих четных и нечетных цифр.

Решение

Последовательно обрабатываем в строке пары рядом стоящих символов. Если это две цифры с различной четностью, цепочка прервалась и правый символ становится первым символом новой цепочки. В противном случае, подсчет текущей цепочки продолжается.

Python

s = open('24-260.txt').readline()
k = 1
mx = 1
for i in range(1, len(s)):
    if s[i].isdigit() and s[i - 1].isdigit() and int(s[i]) % 2 != int(s[i - 1]) %2:
        k = 1
    else:
        k += 1
        mx = max(mx, k)
print(mx)

PascalABC

var
    max, k, i: Integer;
    s: String;
    f: TEXT;
begin
    Assign(f, '24-260.txt');
    Reset(f);
    Readln(f, s);
    max := 1;
    k := 1;
    for i := 2 to s.Length do
        if s[i].IsDigit and s[i - 1].IsDigit and (ord(s[i]) mod 2 <> ord(s[i - 1]) mod 2) then
            k := 1
        else
        begin
            k := k + 1;
            if k > max then
                max := k;
        end;
    Writeln(max);
end.

C++

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    ifstream f;
    f.open("24-260.txt");
    string s, d = "0123456789";
    f >> s;
    int k = 0, max = 0;
    for (int i = 0; i < s.length(); i++)
        if (d.find(s[i]) != -1 && d.find(s[i + 1]) != -1 && (int)s[i] % 2 != (int)s[i + 1] % 2)
            k = 1;
        else
        {
            k++;
            if (k > max)
                max = k;
        }
    cout << max << endl;
}

Ответ

263

Отправить замечание по решению

Код по которому имеется замечание:

Ваш вариант кода:

Комментарий: