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

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

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

Текстовый файл 24-259.txt состоит не более чем из 106 символов и содержит только символы A, T, G, C. Найдите длину наибольшей цепочки символов, которая начинается с ATG, заканчивается на TAA и между этими группами символов не содержит цепочек TAA, TGA и TAG.

Решение

Для решения данной задачи удобнее всего воспользоваться стандартными средствами поиска подстрок в строке.

Python

f = open('24-259.txt')
s = f.readline()
mx = 0;
n1 = s.find('ATG')
while n1 != -1:
    n2 = s.find('TAA', n1 + 3)
    if n2 != -1:
        s1 = s[n1 + 3:n2]
        if 'TAA' not in s1 and 'TGA' not in s1 and 'TAG' not in s1:
            mx = max(mx, n2 - n1 + 3)
    n1 = s.find('ATG', n1 + 3)
print(mx)

PascalABC

var
    n1, n2, max: Integer;
    s, s1: String;
    f: TEXT;
begin
    Assign(f, '24-259.txt');
    Reset(f);
    Readln(f, s);
    max := 0;
    n1 := s.IndexOf('ATG');
    while n1 <> -1 do
    begin
        n2 := s.IndexOf('TAA', n1 + 3);
        if n2 <> -1 then
        begin
            s1 := s[n1 + 3:n2];
            if not (s1.Contains('TAA') or s1.Contains('TGA') or s1.Contains('TAG')) then
                if n2 - n1 + 3 > max then
                    max := n2 - n1 + 3;
        end;
        n1 := s.IndexOf('ATG', n1 + 3);
    end;
    Writeln(max);
end.

C++

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    ifstream f;
    f.open("24-259.txt");
    string s;
    f >> s;
    int max = 0;
    int n1 = s.find("ATG");
    while (n1 != -1)
    {
        int n2 = s.find("TAA", n1 + 3);
        if (n2 != -1)
        {
            string s1 = s.substr(n1 + 3, n2 - n1 - 3);
            if (s1.find("TAA") == -1 && s1.find("TGA") == -1 && s1.find("TAG") == -1)
                if (n2 - n1 + 3 > max)
                    max = n2 - n1 + 3;
        }
        n1 = s.find("ATG", n1 + 3);
    }
    cout << max << endl;
}

Ответ

124

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

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

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

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