讨论 / PID134 字符串的展开 70分程序 怎么错的?
yearwhk 2014-02-01 03:23:46
点我顶贴 收藏 删除
program Pid134_RQNOJ;

var

i,j,p1,p2,p3,q,k:longint;

c:char;

a,b,m:string;

procedure swap(var a,b:char);

var t:char;

begin

t:=a; a:=b; b:=t

end;

BEGIN

readln(p1,p2,p3);

readln(a);

i:=1;

j:=1;

b:='';

while a[i]='-' do begin b[j]:='-'; inc(i); inc(j) end;

while i<=length(a) do begin

if (a[i]<>'-') or ((a[i]='-') and ((a[i-1]='-') or (a[i+1]='-')))

then begin b[j]:=a[i]; inc(i); inc(j); continue end else

if succ(a[i-1])=a[i+1] then begin inc(i); continue end else

if (ord(a[i-1])>=ord(a[i+1]))

or ((a[i-1] in ['0'..'9'] ) and (a[i+1] in ['a'..'z']))

then begin b[j]:='-'; inc(i); inc(j); continue end

else begin

m:=''; q:=1;

case p1 of

1:

for c:=succ(a[i-1]) to pred(a[i+1]) do

for k:=1 to p2 do begin

m[q]:=c;

inc(q)

end;

2:

for c:=succ(a[i-1]) to pred(a[i+1]) do

for k:=1 to p2 do begin

if c in ['0'..'9'] then m[q]:=c else m[q]:=upcase(c);

inc(q)

end;

3:

for c:=succ(a[i-1]) to pred(a[i+1]) do

for k:=1 to p2 do begin

m[q]:='*';

inc(q)

end;

end;

if p3=2 then for k:=1 to (q-1)div 2 do swap(m[k],m[q-k]);

for k:=1 to q-1 do begin b[j]:=m[k]; inc(j) end;

inc(i)

end

end;

for i:=1 to j do write(b[i])

end.

测试结果:http://www.rqnoj.cn/status/1039425

#1 yearwhk@2014-02-02 00:25:55
回复 删除
好吧我终于AC了……孩子们这题别用字符串输出!
查看更多回复
提交回复