Cod sursa(job #303009)

Utilizator danalex97Dan H Alexandru danalex97 Data 9 aprilie 2009 14:31:15
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator fpc Status done
Runda Arhiva educationala Marime 0.75 kb
Program Lgput;   
const m=1999999973;   
var n,p,rez:longint;

procedure Citeste;
var Intrare:text;
begin
  assign(Intrare,'lgput.in');
  reset(Intrare);
  readln(Intrare,n,p);   
  close(Intrare);   
end;   
  
function pow(n,p : longint) : longint;
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.