• СРОЧНО ПЛИИИИИЗ!!!! ДАЮ 75 Баллов
    →Pascal ABC←
    Алексей готов к финальной стадии своего проекта! Он хочет узнать, сколько людей имеют номер телефона с «зеркальной частью». Содержащими зеркальную часть, Алексей считает такие номера, в которых можно найти последовательность цифр w-x-y-y-x-w, либо x-y-y-x (при этом w, x, y не равны друг другу, иначе номер красивым не считается!)


    Например, 4123321 – последовательность с зеркальной частью, а 1234321 – нет. Помогите статистику Алексею провести это важное исследование и выяснить, какое количество номеров среди представленных содержат зеркальную часть.


    Формат входных данных


    В первой строке вводится N (0 < N < 100) - количество номеров. В следующей строке вводится N чисел разрядностью от пяти до девяти знаков.


    Формат выходных данных

    Выведите количество номеров, у которых есть зеркальная часть.

    Примеры:


    входные данные

    6
    345284482 7658668 74554766 76133145 837567 923342


    выходные данные

    4

Ответы 4

  • К сожалению "срочно" решить не получилось. Как увидел - так решил, заняло минут 15-25(
    • Автор:

      maddie33
    • 5 лет назад
    • 0
  • var i,j,n,m,nmb,k,cnt: integer; s: string; ch: char;begin readln(n); cnt:=0; for i:=1 to n do begin read(nmb); s:=IntToStr(nmb); for j:=1 to length(s)-3 do begin ch:=s[j]; s[j]:='*'; k:=Pos(ch,s); if (k=j+3) or (k=j+5) then begin m:=j+1; while (k>0) and (m begin ch:=s[m]; s[m]:='*'; k:=Pos(ch,s); m:=m+1; end; if k=m then cnt:=cnt+1; end; end; end; writeln(cnt);end.
    • Автор:

      ford
    • 5 лет назад
    • 0
  • 6345284482 7658668 74554766 76133145 837567 9233424
    • Автор:

      itsy
    • 5 лет назад
    • 0
  • Для решения задачи с Вашими входными данными подходит, но может быть ошибка с другими данными, о которых я не подумал.

    Var a:array [1..9] of integer;

    i,n,q,u,o,p,y:integer;

    begin

    read (n);

    For i:=1 to n do begin

    read (u);

    q:=u;

    while q<>0 do begin

    p:=p+1;

    q:=q div 10;

    end;

    q:=u;

    For o:=1 to p do begin

    a[o]:=q mod 10;

    q:=q div 10;

    end;

    For o:=3 to p do

    If (a[o]=a[o-1]) and (o>2) and (a[o+1]=a[o-2]) and (a[o]<>a[o+1]) and (p<>4) then y:=y+1 else

    If (p>6) and (a[o]=a[o-1]) and (o>3) and (a[o+1]=a[o-2]) and (a[o+2]=a[o-3]) and (a[o]<>a[o+1]) and (a[o+1]<>a[o+2]) and (a[o]<>a[o+2]) and (p<>6) then y:=y+1;

    For o:=1 to p do

    a[o]:=-1;

    p:=0;

    end;

    write (y);

    end.

  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years