
Код решения:
*****
var k:int64;
n:longint;
rez:int64;
function step(x, m:int64):int64;
var t, j:int64;
begin
t:=1;
j:=1;
while j<=m do
begin
t:=t*x;
j:=j+1;
end;
step:=t;
end;
function count (n1, k1:int64):int64;
begin
if n1=2 then count:=k1*(k1-1)
else count:=k1*step(k1-1, n1-1)-count(n1-1,k1);
end;
begin
readln (n, k);
if n=1 then begin writeln (k); halt; end;
if (k=1) or ((n mod 2 =1) and (k=2)) then begin writeln (-1); halt; end;
if (k=2) and (n mod 2=0) then begin writeln (2); halt; end;
rez:=count(n, k);
writeln (rez);
end.
*****
Комментариев нет:
Отправить комментарий