Cod sursa(job #5642)

Utilizator mariuscris90giuroiu marius mariuscris90 Data 13 ianuarie 2007 15:45:43
Problema Cifra Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.42 kb
program cifra;
type vector=array[1..10] of integer;
var s,s1:string;
    v:vector;
    e:integer;
    t,i,sum,m,j,x:longint;
    f,g:text;
begin
v[1]:=1;v[2]:=5;v[3]:=32;v[4]:=288;v[5]:=413;v[6]:=69;v[7]:=612;v[8]:=828;v[9]:=317;
assign(f,'cifra.in');assign(g,'cifra.out');reset(f);rewrite(g);
readln(f,t);
for i:=1 to t do begin
readln(f,s);
if length(s)=1 then begin val(s,m,e);writeln(g,v[m]mod 10);end;
if length(s)<>1 then begin
{if (s[length(s)]='5') and (s[length(s)-1]='0') then writeln(g,'3');}
if {(s[length(s)]<>'5')and} (s[length(s)]<>'0') then
begin val(s[length(s)-1],m,e);val(s[length(s)],x,e);
if (m*7+v[x]) mod 10=0 then begin sum:=m*317+v[x];
while sum mod 10=0 do
sum:=sum div 10;
writeln(g,sum mod 10);end else
writeln(g,(m*7+v[x]) mod 10);end;
{if (s[length(s)]='5') and (s[length(s)-1]<>'0') then begin
val(s[length(s)-1],m,e);if m=1 then writeln(g,3)
                       else writeln(g,((7*m+3)mod 10) mod 10);end;}
if s[length(s)]='0' then{ begin val(s[length(s)],m,e);writeln(g,v[m]);end
else {if s[length(s)]='0'then}
for j:=length(s)-1 downto 1 do
{if (s[j]='5') and (s[j-1]='0') then begin writeln(g,'3');j:=0;end;
if (s[j]='5') and (s[j-1]<>'0') then begin
val(s[j-1],m,e);if m=1 then writeln(g,3)
                       else writeln(g,(7*v[m]+3) mod 10);}
if s[j]<>'0' then begin val(s[j],m,e);sum:=(7*m) mod 10;
 writeln(g,sum);j:=1;end;
end;end;
close(F);close(g);end.