MBEEWALK - Bee Walk

Tác giả: ladpro98

Ngôn ngữ: Pascal

program BEE;
uses    math;
const   fi = '';
        fo = '';
        maxn = 50;
        B = trunc(1e9);
        dx: array[1..6] of longint = (-1,-1,0,1,1,0);
        dy: array[1..6] of longint = (0,1,1,0,-1,-1);
var     F:array[-maxn..maxn,-maxn..maxn,0..maxn] of longint;
        chk:array[-maxn..maxn,-maxn..maxn,0..maxn] of boolean;
        inp,oup:text;
        n,i,res,t,tt: longint;

function DP(i,j,step: longint): longint;
var     d,x,y:longint;
begin
        if chk[i,j,step] then exit(F[i,j,step]);
        chk[i,j,step] := true;
        if step = 0 then exit(0);
        for d:=1 to 6 do begin
                x := i + dx[d]; y := j + dy[d];
                F[i,j,step] := (F[i,j,step] + DP(x,y,step-1)); //mod B;
        end;
        exit(F[i,j,step]);
end;

begin
        assign(inp,fi);reset(inp);assign(oup,fo);rewrite(oup);
        readln(inp,t);
        for tt:=1 to t do begin
        readln(inp,n); chk[0,0,0] := true; F[0,0,0] := 1;
        for i:=1 to 6 do begin
                chk[dx[i],dy[i],1] := true;
                F[dx[i],dy[i],1] := 1;
        end;
        res := DP(0,0,n);
        writeln(oup,res);
        end;
        close(oup);
end.

Download