Ано целое число n (> 0). найти наименьшее целое положительное число k, квадрат которого превосходит n: k^2> n. функцию извлечения квадратного корня не использовать. решить через repeat
// PascalABC.NET 3.1, сборка 1214 от 09.04.2016 function AutoMorph(n:integer):boolean; begin var s1:=n.ToString; Result:=(s1=(n*n).ToString.Right(s1.Length)) end;
begin var a,b:integer; Write('Введите а и b: '); Read(a,b); for var i:=a to b do if AutoMorph(i) then Print(i) end.
Тестовое решение: Введите а и b: 1 10000 1 5 6 25 76 376 625 9376
Попробовал переписать функцию в более примитивный вид. По-моему, она не стала проще, только удлинилась...
function AutoMorph(n:integer):boolean; begin var s1:=IntToStr(n); // n переводим в строковое представление var s2:=IntToStr(n*n); // n*n переводим в строковое представление var l1:=Length(s1); // длина строки s1 s2:=RightStr(s2,l1); // правые l1 символов из s2 Result:=(s1=s2) end;
var N, K:integer;
begin
writeln;
write(' N = ');
readln(N); K := 1; repeat
K:=k+1;;
until K * K > N;
writeln;
writeln('ответ: ', K);
end.