Pascal. Задача 8-5
Пользователь вводит натуральное число N. Вывести все такие значения среди чисел 1..N, запись которых совпадает с последними цифрами их квадрата. Например 6, 36.
Задачу решить двумя способами: с использованием и без использования строк. Для преобразования целого в строку можно воспользоваться функцией 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.