Cod sursa(job #1129706)

Utilizator EuBossuletMuntea Andrei EuBossulet Data 28 februarie 2014 07:56:50
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 0.55 kb
Program ridicare_la_putere;
var n,p:int64;
    f,q:text;
function exp(n,p:int64):int64;
begin
        if p=0 then exp:=1
        else if p=1 then exp:=n
        else if p mod 2=0 then exp:=exp((n mod 1999999973)*(n mod 1999999973) mod 1999999973, p div 2)
        else if p mod 2=1 then exp:=((n mod 1999999973)*exp((n mod 1999999973)*(n mod 1999999973) mod 1999999973, (p-1) div 2)) mod 1999999973;
end;
begin

assign(f,'lgput.in');
reset(f);
assign(q,'lgput.out');
rewrite(q);
readln(f,n,p);
writeln(q,exp(n,p));
close(f);
close(q);
end.