Найти число от M до N, квадрат которого содержит максимальное количество троек.Если искомых чисел несколько, выдать максимальное и минимальное из них — Pascal(Паскаль)

{ Функция которая считает количество цифр C в числе M }
Function CountCinM(c, m: Integer):Integer;
Var
  n: Integer; { количество искомых цифр }
Begin
  n:=0; { изначально количество искомых цифр равно 0 }
  While m>0 Do Begin
    If m Mod 10 = c Then { если это искомая цифра, то }
      n:=n+1;            { количество цифр увеличиваем на единицу }
    m:=m Div 10;
  End;
  CountCinM:=n; { возвращаем найденное количество искомых цифр }
End;
 
Var
  i, m, n, p, q, t:Integer;
  a: Array [1..25] Of Integer; { массив, в котором будем хранить числа }
Begin
  Write('Vvedite M: '); ReadLn(m);
  Write('Vvedite N: '); ReadLn(n);
  q:=0; { количество чисел с наибольшем количеством троек в квадратах }
  t:=0; { найденное количество троек }
  For i:=m To n Do Begin
    p:=CountCinM(3, i*i); { ищем количество троек в квадрате числа i }
    If (p>0) and (p>=t) Then Begin
      If p>t Then Begin
        t:=p;
        q:=0;
      End;
      If q<25 Then Begin { проверяем на всякий случай что массив чисел не переполнится }
        q:=q+1; { увеличиваем количество чисел }
        a[q]:=i; { запоминаем число }
      End;
    End;
  End;
  WriteLn('Количество найденных чисел: ',q, ' Количество троек:', t);
  { Выводим сами чиcла }
  For i:=1 To q Do
    Write(a[i], ' ');
  WriteLn;
  If q>0 Then
    WriteLn('Наибольшее: ', a[1], ' Наименьшее: ', a[q]);
  ReadLn;
End.

Leave a Comment

− 3 = 5