讨论 / 求教。哪里错了?
xxd 2010-11-15 02:40:00
点我顶贴 收藏 删除
const cc:array ['a'..'z'] of integer=(26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1);

cc1:array [1..26] of char=('z','y','x','w','v','u','t','s','r','q','p','o','n','m','l','k','j','i','h','g','f','e','d','c','b','a');

var i,j,k,m,n,w,t,sum:integer;

s,s1:string;

a,b,c:array [1..100] of integer;

flag:boolean;

begin

readln(k,w,n);

readln(s);

readln(s1);

for i:=1 to w do

begin

a[i]:=cc[s[w-i+1]];

b[i]:=cc[s1[w-i+1]];

c[i]:=c[i]+a[i]+b[i];

if c[i]>k then begin

c[i+1]:=c[i+1]+c[i] div k;

c[i]:=c[i] mod k;

end;

end;

flag:=true;

for i:=1 to w-1 do

if (c[i]<=c[i+1]) then begin

flag:=false;

break;

end;

if flag then begin

for i:=w downto 1 do

write(cc1[c[i]]);

writeln;

end

else begin

while not flag do

begin

flag:=true;

inc(c[1]);

for i:=1 to w do

if c[i]>k then

begin

c[i+1]:=c[i+1]+c[i] div k;

c[i]:=c[i] mod k;

end;

for i:=1 to w-1 do

if (c[i]<=c[i+1]) then begin

flag:=false;

break;

end;

if c[w+1]>0 then halt;

if c[w]>k-w+1 then halt;

end;

for i:=w downto 1 do

write(cc1[c[i]]);

writeln;

end;

for i:=1 to n do

begin

flag:=false;

while not flag do

begin

flag:=true;

inc(c[1]);

for j:=1 to w do

if c[j]>k then

begin

c[j+1]:=c[j+1]+c[j] div k;

c[j]:=c[j] mod k;

end;

for j:=1 to w do

if (c[j]<=c[j+1]) then begin

flag:=false;

break;

end;

if c[w+1]>0 then halt;

if c[w]>k-w+1 then halt;

end;

if flag then begin

for j:=w downto 1 do

write(cc1[c[j]]);

writeln; end;

end;

end.

查看更多回复
提交回复