Cod sursa(job #1116305)

Utilizator azkabancont-vechi azkaban Data 22 februarie 2014 14:38:19
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 0.82 kb
Program logn;
var n,p: longint;

function putere(baza,exp : longint) :  longint;
     var aux : longint; rest: int64;
      begin
            if exp=0 then putere:=1
                     else begin
                               aux:=1; rest:=1999999973;
                               while exp>0 do
                          begin
                               if exp mod 2=1 then aux:=(aux*baza) mod rest;
                               baza:=sqr(baza) mod rest;
                               exp:=exp div 2;
                           end;
                                putere:=p;
                          end;
     end;
begin
    assign(input,'lgput.in'); reset(input);
    assign(output,'lgput.out'); rewrite(output);
    readln(n,p);
    writeln(putere(n,p));
    close(input); close(output);
end.