Натуральное число называется автоморфным, если оно равно последним цифрам своего...

0 голосов
386 просмотров

Натуральное число называется автоморфным, если оно равно последним цифрам своего квадрата. Например, 25^2 = 625. Напишите программу, которая получает натуральное число N и выводит на экран все автоморфные числа, не превосходящие N.
Пример:
Введите N:
1000
1*1=1
5*5=25
6*6=36
25*25=625
76*76=5776


Информатика (175 баллов) | 386 просмотров
Дан 1 ответ
0 голосов

//PascalABC.NET 3.0
function check(x: integer): boolean;
begin
var tmp := x * x;
Result := true;
repeat
if tmp mod 10 <> x mod 10 then Result := false;
tmp := tmp div 10;
x := x div 10;
until (x = 0) or not(Result);
end;
begin
var n := ReadInteger('Введите N:');
Range(1, n).Where(x -> check(x)).Select(x -> x.ToString + '*' + x.ToString + '=' + (x * x).ToString).Println(NewLine)
end.

(13.3k баллов)
0

А если N = 1000?   В условии выбора сравнение по mod 100

0

mod 100 оставляет только две последние цифры числв, что и требуется

0

А числа 100 и 1000 одного порядка ?

0

1 1
5 25
6 36
25 625
76 5776
376 141376
625 390625  - это для N = 1000

0

для n = 1000 в условии

0

извиняюсь, не дочитал условие

0

Исправил

0

Можно короче исправить Вашу программу        //PascalABC.NET 3.0
function Ordd(var x,m: integer):integer;
begin
  if x=m then m:=m*10;
  Ordd:=m;
end;
Begin
var n := ReadInteger('Введите N: ');
var m: integer;  m:=10;
Range(1, n).Where(x -> x = x*x mod Ordd(x,m)).Select(x -> x.ToString + '*' + x.ToString + '=' + (x * x).ToString).Println
End.

0

Тоже вариант