- Самый простой способ. Только для положительных чисел и степеней.
Procedure S(Var p,n,r : Integer);
Begin
IF r=0 Then r:=1;
IF n=0 Then Exit;
r:=r*p;
Dec(n);
S(p,n,r)
End;
Var
a,b,c:Integer;
Begin
ReadLn( a, b );
S( a, b, c );
WriteLn( c );
End.
2. Стандартный способ.
x^a = Exp(a*Ln(x))
3. Как возвести (-1) в степень N?
Способ x^a = Exp(a*Ln(x)) не подходит, т.к. для вычисления по этой формуле основание степени x должно
быть положительным. Используем функцию:
Function minusOnePower(n: Integer): Integer;
Begin
minusOnePower := (1 - 2*Byte(Odd(n)));
End;
Является ли число степенью двойки?
Function is_power_2(x: Word): Boolean;
Begin
is_power_2 := (x > 0) and ((x and Pred(x)) = 0)
End;