Все квадраты натуральных чисел записаны подряд, начиная с единицы. Определить, какая цифра стоит на N-м месте.
Пример
Ввода: 4
Вывода: 1

Немного теории.
Для того, чтобы избежать переполнения разрядной сетки, значение квадрата натурального числа не должно превышать максимального числа, представимого выбранным типом данных.
В языке Паскаль числа типа longint записываются в четырех байтах в дополнительном коде, т.е. максимальное значение числа не может превышать 2³¹-1. Тогда максимальное натуральное число, квадрат которого мы можем вычислить, равно целой части от величины:
displaystyle lim:= sqrt{2^{31}-1} approx 2^{31/2}=2^{15.5}= e^{15.5cdot ln(2)} 

//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])
  else Writeln(Решения в типе данных longint невозможно)
end.

Тестовое решение:
Введите номер позиции: 4
Искомая цифра- 1

Введите номер позиции: 33
Искомая цифра- 5


Оцени ответ
Подпишись на наш канал в телеграм. Там мы даём ещё больше полезной информации для школьников!

Загрузить картинку