Cod sursa(job #308646)

Utilizator kolapsysPostelnicu Dan Marian kolapsys Data 28 aprilie 2009 01:19:36
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator fpc Status done
Runda tot Marime 0.6 kb
const c:int64 = 1999999973;
var n,p:int64;
    f,g:text;
function rez(n,p:int64):int64;
var a:int64;
begin
     if p=0 then rez:=1
            else if p=1 then rez:=n
                        else begin
                             a:=rez(n,p div 2);
                             a:=a*a mod c;
                             if odd(p) then a:=a*n mod c;
                             rez:=a;
                             end;
end;
begin
        assign(f,'lgput.in'); reset(f);
        assign(g,'lgput.out'); rewrite(g);
        read(f,n,p);
        write(g,rez(n,p));
        close(f); close(g);
end.