产生数 pascal内容:给出一个整数n(n≤2000)和m个变换规则(m≤15).规则:① 1个数字可以变换成另1个数字;② 规则中,右边的数字不能为零.例如:n=234,m=2规则为2 → 53 → 6上面的整数234经
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/26 22:53:33
产生数 pascal内容:给出一个整数n(n≤2000)和m个变换规则(m≤15).规则:① 1个数字可以变换成另1个数字;② 规则中,右边的数字不能为零.例如:n=234,m=2规则为2 → 53 → 6上面的整数234经
产生数 pascal
内容:
给出一个整数n(n≤2000)和m个变换规则(m≤15).
规则:
① 1个数字可以变换成另1个数字;
② 规则中,右边的数字不能为零.
例如:n=234,m=2规则为
2 → 5
3 → 6
上面的整数234经过变换后可能产生出的整数为(包括原数)
234 534 264 564
共4种不同的产生数
求经过任意次的变换(0次或多次),能产生出多少个不同的整数.
仅要求输出不同整数个数.
输入
输入格式为
n
m
x1 y1
x2 y2
… …
xn yn
输出
输出格式为一个整数(满足条件的整数个数).
输入输出样例
输入:
234
2
2 5
3 6
输出:
4
产生数 pascal内容:给出一个整数n(n≤2000)和m个变换规则(m≤15).规则:① 1个数字可以变换成另1个数字;② 规则中,右边的数字不能为零.例如:n=234,m=2规则为2 → 53 → 6上面的整数234经
program p2002i3;
const
v:array['0'..'9']of longint=(0,1,2,3,4,5,6,7,8,9);
ch:array[0..9]of char='0123456789';
var a:array[0..9,0..9]of boolean;
b:array[1..10000]of longint;
c:array[0..9]of longint;
tmp:array[1..1000] of integer;
n,num,s,p,total:longint;
shuru:string;su:longint;
procedure init;
var l,i,j,k:longint;s:string;
begin
readln(s);
shuru:=s;
su:=pos(' ',s)-1;
k:=pos(' ',s);
l:=length(s)-k;
k:=k+1;
repeat
j:=1;
for i:=1 to l-1 do
j:=j*10;
n:=n+(ord(s[k])-ord('0'))*j;
l:=l-1;
k:=k+1;
until l=0;
end;
procedure search;
var x,y,i,j,k:longint;
begin
fillchar(a,sizeof(a),0);
for i:=1 to n do
begin
readln(x,y);
a[x,y]:=true;
end;
for k:=0 to 9 do
for i:=0 to 9 do
for j:=0 to 9 do
a[i,j]:=a[i,j] or(a[i,k] and a[k,j]);
for i:=0 to 9 do
a[i,i]:=true;
fillchar(c,sizeof(c),0);
for i:=0 to 9 do
for j:=0 to 9 do
if a[i,j] then inc(c[i]);
end;
procedure mul(a,b:string; var c:string);
var
i,j,g,p,k:integer;
begin
while (length(a)>1)and(a[1]='0') do delete(a,1,1);
while (length(b)>1)and(b[1]='0') do delete(b,1,1);
p:=length(a)+length(b);
for i:=1 to p do
tmp[i]:=0;
for i:=1 to length(a) do
for j:=1 to length(b) do
begin
k:=p-i-j;
inc(tmp[p-k] ,v[a[i]]*v[b[j]] mod 10);
inc(tmp[p-k-1],v[a[i]]*v[b[j]] div 10);
end;
g:=0;
c:='';
for i:=p downto 1 do
begin
c:=ch[(tmp[i]+g) mod 10]+c;
g:=(tmp[i]+g) div 10;
end;
while (length(c)>1)and(c[1]='0') do delete(c,1,1);
end;
procedure outit;
var i,j,k:longint; x,y,z:string;s:longint;
begin
s:=ord(shuru[1])-ord('0');
z:=chr(c[s]+ord('0'));
for i:=2 to su do
begin
s:=ord(shuru[i])-ord('0');
if c[s]