четверг, 8 августа 2013 г.

23. Новогодняя елка

prb23Для украшения елки Петя имеет гирлянду из N ламп и K разных красок для их раскраски. Сколькими способами он может это сделать, если никакие 2 одинаковые цвета не должны быть рядом?
Код решения:
*****
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.

*****

Комментариев нет:

Отправить комментарий