Cod sursa(job #298253)

Utilizator mlazariLazari Mihai mlazari Data 5 aprilie 2009 22:51:32
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator fpc Status done
Runda Arhiva educationala Marime 0.66 kb
Program Lgput;
const m=1999999973;
var n,p,rez : int64;

procedure Citeste;
var Intrare : text;
begin
  assign(Intrare,'lgput.in');
  reset(Intrare);
  readln(Intrare,n,p);
  close(Intrare);
end;

function pow(n,p : int64) : int64;
var k : int64;
begin
  if p=0 then pow:=1
  else
   if p mod 2=1 then pow:=((n mod m)*pow(n,p-1)) mod m
   else begin
     k:=pow(n,p div 2);
     pow:=k*k;
   end;
end;

procedure Calculeaza;
begin
  rez:=pow(n,p);
end;

procedure Scrie;
var Iesire : text;
begin
  assign(Iesire,'lgput.out');
  rewrite(Iesire);
  write(Iesire,rez);
  close(Iesire);
end;

begin
  Citeste;
  Calculeaza;
  Scrie;
end.