Cod sursa(job #678027)

Utilizator Buzu_Tudor_RoCont vechi Buzu_Tudor_Ro Data 10 februarie 2012 21:54:23
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 0.47 kb
Program ridic_logaritmic;
const mk=1999999973;
var fi,fo : text;
    a,p,sol : qword; i,m : longword;

begin
    assign(fi,'lgput.in'); reset(fi); read(fi,a,p);
    assign(fo,'lgput.out'); rewrite(fo);
    sol:=1; m:=0;
    while (1 shl m)<p do m:=m+1;

    for i:=0 to m do begin
                     if p and (1 shl i)>0 then sol:=(sol*a) mod mk;
                     a:=(a*a) mod mk;
                     end;
    write(fo,sol);
    close(fi); close(fo);
end.