Cod sursa(job #146666)
| Utilizator | Data | 1 martie 2008 23:12:08 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 30 |
| Compilator | fpc | Status | done |
| Runda | Arhiva educationala | Marime | 0.46 kb |
const m=1999999973;
var n,p:int64;
f:text;
function putere(p:int64):int64;
var r:int64;
begin
if p=1 then putere:=n mod m
else
begin
r:=putere(p shr 1) mod m;
if not odd(p) then putere:=(r*r) mod m
else putere:=(r*r*n) mod m;
end;
end;
begin
assign(f,'lgput.in');
reset(f);
read(f,n,p);
close(f);
assign(f,'lgput.out');
rewrite(f);
write(f,putere(p));
close(f);
end.