Cod sursa(job #303011)

Utilizator danalex97Dan H Alexandru danalex97 Data 9 aprilie 2009 14:33:08
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator fpc Status done
Runda Arhiva educationala Marime 0.67 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 : longint;
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) mod m;
   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.