Немного теории.
Для того, чтобы избежать переполнения разрядной сетки, значение квадрата натурального числа не должно превышать максимального числа, представимого выбранным типом данных.
В языке Паскаль числа типа longint записываются в четырех байтах в дополнительном коде, т.е. максимальное значение числа не может превышать 2³¹-1. Тогда максимальное натуральное число, квадрат которого мы можем вычислить, равно целой части от величины:
//PascalABC.Net 3.0, сборка 1066
var
s:string;
i,n,lim,l:longint;
begin
lim:=Trunc(exp(15.5*ln(2)));
Write('Введите номер позиции: '); Read(n);
i:=0; l:=0;
while (l Inc(i); Str(i*i,s); l:=l+Length(s);
end;
if i<=lim then Writeln('Искомая цифра- ',s[Length(s)-l+n])<br> else Writeln('Решения в типе данных longint невозможно')
end.
Тестовое решение:
Введите номер позиции: 4
Искомая цифра- 1
Введите номер позиции: 33
Искомая цифра- 5