Cod sursa(job #146649)

Utilizator RobybrasovRobert Hangu Robybrasov Data 1 martie 2008 22:52:23
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 0.46 kb
const m=1999999973;

var     n,p,m: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.