Возведение целого числа в натуральную степень — Pascal (Паскаль)

Вариант 1

var x,y:integer;
 
function Degree(a,b:integer):longint;
var r:longint;
begin
     r:=1;
     while b>0 do begin
        r:=r*a;
        b:=b-1;
     end;
     Degree:=r;
end;
 
begin
    writeln('введите число и (через пробел) степень числа');
    readln(x,y);
    writeln(Degree(x,y)); { print x^y }
end.

Вариант 2 (более быстрый и эффективный)

var x,y:integer;
 
function Degree(a,b:integer):longint;
var r:longint; c:integer;
begin
     r:=1; c:=a;
     while b>0 do begin
        if odd(b) then begin
                       r:=r*c;
                       dec(b);
                  end else begin
                       c:=c*c;
                       b:=b div 2;
                  end;
     end;
     Degree:=r;
end;
 
begin
    writeln('введите число и (через пробел) степень числа');
    readln(x,y);
    writeln(Degree(x,y)); { print x^y }
end.

Leave a Comment

+ 83 = 93