Cod sursa(job #150219)

Utilizator radupointMircea Radu-Viorel radupoint Data 6 martie 2008 19:07:58
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator fpc Status done
Runda Arhiva educationala Marime 0.58 kb
program p1;
 var
    f:text;
    n,p,r:longint;

 function putere(n,p:longint):longint;
  var
     r:longint;
  begin
   n:=n mod 1999999973;
    if p=0 then
     putere:=1
    else
     if p=1 then
      putere:=n
     else
      begin
       r:=putere((n*n),p div 2);
       r:=r mod 1999999973;
        if p mod 2=1 then
         r:=r*n;
         putere:=r;
        end;
   end;

begin
 assign(f,'lgput.in');
 reset(f);
  read(f,n,p);
 close(f);
    r:=putere(n,p) mod 1999999973;
   assign(f,'lgput.out');
   rewrite(f);
    write(f,r);
   close(f);
end.