g:array[0..10,1..9] of boolean;
x:array[1..31] of longint;
x1,x2:array[1..15] of longint;
s,ans:ansistring;
i,j,k,temp:longint;
procedure work(a,b:longint);
var k:longint;
begin
if g[a,b] then begin
x[i]:=x[i]+1;
for k:=1 to 9 do work(b,k);
end;
end;
procedure chen(num:longint);
var
i,l1,l2,j,l3:longint;
temp,s:ansistring;
a,b,c:array[1..200] of longint;
begin
l1:=length(ans);
str(num,s);
l2:=length(s);
for i:=1 to l1 do begin
a[i]:=0;
val(ans[l1-i+1],a[i]);
end;
for i:=1 to l2 do begin
b[i]:=0;
val(s[l2-i+1],b[i]);
end;
for i:=1 to l1+l2 do c[i]:=0;
for i:=1 to l1 do
for j:=1 to l2 do begin
c[i+j-1]:=c[i+j-1]+(a[i]*b[j]) mod 10;
c[i+j]:=c[i+j]+(a[i]*b[j] div 10)+(c[i+j-1] div 10);
c[i+j-1]:=c[i+j-1] mod 10;
end;
l3:=l1+l2;
while c[l3]=0 do l3:=l3-1;
ans:='';
for i:=l3 downto 1 do begin
str(c[i],temp);
ans:=ans+temp;
end;
end;
begin
readln(s);
val(copy(s,pos(' ',s)+1,length(s)-pos(' ',s)),k);
delete(s,pos(' ',s),length(s)-pos(' ',s)+1);
for i:=0 to 10 do
for j:=1 to 9 do
g[i,j]:=false;
for i:=1 to k do begin
readln(x1[i],x2[i]);
g[x1[i],x2[i]]:=true;
end;
for i:=1 to length(s) do begin
val(s[i],temp);
x[i]:=1;
for j:=1 to k do
if x1[j]=temp then work(temp,x2[j]);
end;
ans:='1';
for i:=1 to length(s) do chen(x[i]);
write(ans);
end.
就是只对两个点,帮忙找错。。