{ Функция которая считает количество цифр 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.