讨论 / 此题很坑爹!!! (题解)
刘泽寅 2013-10-08 02:53:00
点我顶贴 收藏 删除
program guowang;

var a:string;

b:char;

i,j,k,la,lb,m,kk:integer;

d:boolean;

p:array[1..26,1..26]of char;

procedure wr;

begin

for i:=1 to 26 do

for j:=1 to 27-i do

p[i,j]:=chr(i+j+95);

k:=97;

for j:=2 to 26 do

begin

p[i,j]:=chr(k); inc(k);

end;

for i:=25 downto 2 do

for j:=28-i to 26 do

p[i,j]:=p[i+1,j-1];

end;

begin

assign(input,'vigenere.in');

assign(output,'vigenere.ans');

reset(input);

rewrite(output);

wr;

read(a);

readln;

la:=length(a); j:=0;

while not eoln do

begin

read(b);

inc(j); d:=false;

if j>la then j:=1;

if ord(b)<97 then begin d:=true; b:=chr(ord(b)+32); end;

m:=ord(a[j])-96;

for k:=1 to 26 do

if p[m,k]=b then kk:=k;

if d then write(upcase(chr(kk+96))) else write(chr(kk+96));

end;

close(input);

close(output);

end.

查看更多回复
提交回复