Pascal. Задача 8-5

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

Exotic car rentals in Dubai.

Задачу решить двумя способами: с использованием и без использования строк. Для преобразования целого в строку можно воспользоваться функцией IntToStr.

Решение

Вариант без использования строк

var
  N, tmp, q, i, j, k : integer;
  flag : boolean;
begin
  Write('Введите натуральное число: ');
  Readln(N);
  for i := 1 to N do begin
    k := 0; // Определяем количество разрядов числа
    tmp := i;
    while tmp > 0 do begin
      Inc(k);
      tmp := tmp div 10;
    end;
    tmp := i;
    q := i * i;
    flag := true; // В процессе проверки сбрасываем флаг
                  // если цифры не совпадают
    for j := 1 to k do begin
      if (tmp mod 10) <> (q mod 10) then begin
        flag := false;
        break; // В дальнейшей проверке нет необходимости
      end;
      tmp := tmp div 10;
      q := q div 10;
    end;
    if flag then
      Writeln(i,' ', i * i);
  end;
end.

Вариант с использованием строк

var
  N, i : integer;
  s, s1 : string;
begin
  Write('Введите натуральное число: ');
  Readln(N);
  for i := 1 to N do begin
    s := IntToStr(i);
    s1 := IntToStr(i * i);
    if(s = Copy(s1, Length(s1) - Length(s) + 1, Length(s))) then
      Writeln(i,' ', i * i);
  end;
end.