Cod sursa(job #146287)

Utilizator Pepelea_FlaviuFlaviu Pepelea Pepelea_Flaviu Data 1 martie 2008 15:17:44
Problema Ridicare la putere in timp logaritmic Scor 30
Compilator fpc Status done
Runda Arhiva educationala Marime 0.48 kb
var fi,fo:text;
    n,p,m:int64;
function exp(p:int64):int64;
var aux:int64;
begin
  if p=0 then exp:=1
    else
      begin
        aux:=exp(p shr 1);
        if p and 1=0 then exp:=((aux mod m)*(aux mod m)) mod m
         else exp:=((aux mod m)*(aux mod m)*n) mod m;
      end;
end;
begin
  assign(fi,'lgput.in'); reset(fi);
  assign(fo,'lgput.out'); rewrite(fo);
  read(fi,n,p);
  m:=1999999973;
  n:=n mod m;
  writeln(fo,exp(p));
  close(fi);
  close(fo);
end.