记录编号 209 评测结果 AAAAAAAAAA
题目名称 [NOIP 2007]字符串的展开 最终得分 100
用户昵称 Gravatar王瑞祥K 是否通过 通过
代码语言 Pascal 运行时间 10.000 s
提交时间 2008-07-17 17:19:29 内存使用 0.01 MiB
显示代码纯文本
program expand(input,output);
var
 s,zh:string;
 p1,p2,p3,i,j,l:integer;
begin
 assign(input,'expand.in');assign(output,'expand.out');
 reset(input);rewrite(output);
 readln(input,p1,p2,p3);
 readln(input,s);
 l:=pos('-',s);
 while l<>0 do begin
  if l=1 then begin write(s[1]);delete(s,1,1);l:=pos('-',s);end
  else begin
   if(s[l-1]in['0'..'9'])and(s[l+1]in['a'..'z'])
   or(s[l-1]in['a'..'z'])and(s[l+1]in['0'..'9'])then begin
    zh:=copy(s,1,l);
    write(output,zh);
   end
   else begin
    if ord(s[l+1])<=ord(s[l-1])then begin
     zh:=copy(s,1,l);
     write(output,zh);end
    else begin
     if p3=1 then begin
      zh:=copy(s,1,l-2);
      write(output,zh);
      zh:=s[l-1];
      for i:=(ord(s[l-1])+1)to(ord(s[l+1])-1)do begin
       for j:=1 to p2 do begin
        if p1=1 then zh:=zh+chr(i);
        if p1=2 then if s[l-1]in['a'..'z']then zh:=zh+chr(i-32) else zh:=zh+chr(i);
        if p1=3 then zh:=zh+'*';
       end;
      end;
     end;
     if p3=2 then begin
      zh:=copy(s,1,l-2);
      write(output,zh);
      zh:=s[l-1];
      for i:=(ord(s[l+1])-1)downto(ord(s[l-1])+1)do begin
       for j:=1 to p2 do begin
        if p1=1 then zh:=zh+chr(i);
        if p1=2 then if s[l-1]in['a'..'z']then zh:=zh+chr(i-32) else zh:=zh+chr(i);
        if p1=3 then zh:=zh+'*';
       end;
      end;
     end;
     write(output,zh);
    end;
   end;
   delete(s,1,l);
   l:=pos('-',s);
  end;
 end;
 write(output,s);
 close(input);close(output);
end.