var s1,s2,s3:string; a,b:array['a'..'z']of char; i:longint; c:char;begin readln(s1); readln(s2); readln(s3);//s1为一条加密信息,s2为原信息。通过他们找到密码与原码之间的对应关系。//一个加密字母对应一个原码字母(用a表示);一个原码字母对应一个密码字母(用b表示) fillchar(a,sizeof(a),' ');//赋初值,即没有找到对应的原码字母 fillchar(b,sizeof(b),' ');//赋初值,即没有找到对应的密码字母 for i:=1 to length(s1) do if ((a[s1[i]]<>' ')and(a[s1[i]]<>s2[i]))//不为空格,就是说已经有相应的原码字母//<>s2[i],说明有另一个不同的原码字母(s1[i]为原来已经有的),矛盾 or((b[s2[i]]<>' ')and(b[s2[i]]<>s1[i]))//不为空格,就是说已经有相应的密码字母//<>s1[i],说明有另一个不同的密码字母,矛盾 then begin writeln('failed'); exit; end else begin a[s1[i]]:=s2[i];//s1[i]对应的原码存在a数组中 b[s2[i]]:=s1[i];//s2[i]对应的密码存在b数组中 end; for c:='a' to 'z' do if a[c]=' ' then//处理原来的密码和原码字任串时,里面有不存在的字母 begin writeln('failed'); exit; end; for i:=1 to length(s3) do write(a[s3[i]]);end. 20210311