Cod sursa(job #1045469)

Utilizator robertdx3Robert robertdx3 Data 1 decembrie 2013 17:17:46
Problema Cifra Scor 80
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.23 kb
program cifra;

var nr : array[0..9,1..4] of byte;
    f,g : text;
    i,a,b,t,j,x : integer;
    s : string;

function cifra(x : integer) : integer;
var c,i,a,b : integer;
begin
    c := 4*(x div 20) mod 10;
    x := x mod 20;
    for i := 1 to x do begin
        a := i mod 10;
        b := (i-1) mod 4 + 1;
        c := (c+nr[a,b]) mod 10;
        end;
    cifra := c;
end;

begin
    nr[1,1] := 1; nr[1,2] := 1; nr[1,3] := 1; nr[1,4] := 1;
    nr[2,1] := 2; nr[2,2] := 4; nr[2,3] := 8; nr[2,4] := 6;
    nr[3,1] := 3; nr[3,2] := 9; nr[3,3] := 7; nr[3,4] := 1;
    nr[4,1] := 4; nr[4,2] := 6; nr[4,3] := 4; nr[4,4] := 6;
    nr[5,1] := 5; nr[5,2] := 5; nr[5,3] := 5; nr[5,4] := 5;
    nr[6,1] := 6; nr[6,2] := 6; nr[6,3] := 6; nr[6,4] := 6;
    nr[7,1] := 7; nr[7,2] := 9; nr[7,3] := 3; nr[7,4] := 1;
    nr[8,1] := 8; nr[8,2] := 4; nr[8,3] := 2; nr[8,4] := 6;
    nr[9,1] := 9; nr[9,2] := 1; nr[9,3] := 9; nr[9,4] := 1;


    assign(f,'cifra.in'); reset(f);
    assign(g,'cifra.out'); rewrite(g);

    readln(f,t);

    for i := 1 to t do begin
        readln(f,s); j := length(s);

        s := copy(s,j-1,2);
        val(s,x,j);
        writeln(g,cifra(x));
        end;

    close(f); close(g);

end.