MMOD29 - CALCULATE POW(2004,X) MOD 29

Tác giả: khuc_tuan

Ngôn ngữ: Pascal

// {$APPTYPE CONSOLE}
 {$mode delphi}

function pow(x,n : integer) : integer;
var
    t : integer;
begin
    if n=0 then pow := 1
    else
    begin
        t := pow(x,n div 2);
        if n mod 2 = 0 then pow := t * t mod 29
        else pow := t * t * x mod 29;
    end;
end;

var
    r, x : integer;

begin
    while true do
    begin
        read(x);
        if x=0 then break;
        r := 1;
        r := r * (28 + pow(3,x+1)) * pow(2, 27) mod 29;
        r := r * (28 + pow(167,x+1)) * pow( 166, 27) mod 29;
        r := r * (28 + pow(2,2*x+1)) mod 29;
        writeln(r);        
    end;
end.

Download