Cod sursa(job #150309)

Utilizator TudorRTudor Radacineananu TudorR Data 6 martie 2008 20:27:19
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 0.7 kb
    program p21;    
     var n,p:int64;  
         m:int64;  
         f,g:text;  
     function puterile(n,p:int64):int64;  
     var r:int64;  
     begin  
     n:=n mod 1999999973;  
     if p=0 then puterile:= 1  
     else if p=1 then puterile:=n  
     else begin  
           r:=puterile((n*n), p div 2);  
           r:=r mod 1999999973;  
           if p mod 2=1 then r:=(r*n);  
           r:=r mod 1999999973;  
           puterile:=r;  
          end;  
     end;  
      
     begin  
     assign(f,'lgput.in');reset(f);  
     assign(g,'lgput.out');rewrite(g);  
     readln(f,n,p);  
     m:=puterile(n,p) mod 1999999973;  
     writeln(g,m);  
     close(g);  
     end.