Cod sursa(job #1129704)
Utilizator | Muntea Andrei EuBossulet | Data | 28 februarie 2014 07:53:13 |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
Compilator | fpc | Status | done |
Runda | Arhiva educationala | Marime | 0.45 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*n mod 1999999973, p div 2)
else if p mod 2=1 then exp:=n*exp(n*n mod 1999999973, (p-1) div 2);
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.