记录编号 213 评测结果 AAAAAAAAAA
题目名称 [NOIP 2007]字符串的展开 最终得分 100
用户昵称 Gravatarrottenwood 是否通过 通过
代码语言 Pascal 运行时间 10.000 s
提交时间 2008-07-17 19:38:53 内存使用 0.01 MiB
显示代码纯文本
program ex(f1,f2);
 var
  s,s1,s2,s3:string; f1,f2:text;
  i,j,k,c,n,m,p1,p2,p3,l:integer;
  ch1,ch2:char; flag,flag2,flag3:boolean;
 begin
  assign(f1,'expand.in'); reset(f1);
  assign(f2,'expand.out'); rewrite(f2);
  readln(f1,p1,p2,p3);
  readln(f1,s);
  flag:=true;
while flag do
 begin
  l:=pos('-',s);
  s1:=copy(s,1,l);
  flag2:=true;
  if s1='' then begin flag:=false; write(f2,s); end;
   delete(s,1,l);
  if s1[1]='-' then begin delete(s1,1,1); flag2:=false end;
  ch1:=s1[l-1];
  ch2:=s[1];
  s3:='';
 if s1<>'' then begin
  for j:=(ord(ch1)+1) to (ord(ch2)-1) do
  s3:=s3+chr(j);
  if ((ord(ch2)-1)-ord(ch1)>0)and
  (((ch1>='a')and(ch2<='z'))or((ch1>='0')and(ch2<='9')))
  then
   begin
    if p1=2 then for j:=1 to length(s3) do
       begin
      if (s3[j]>='a')and(s3[j]<='z') then
       s3[j]:=chr(ord(s3[j])-32);
       end
            else if p1=3 then
      for j:=1 to length(s3) do
       s3[j]:='*';
      delete(s1,l,1);
      write(f2,s1);
      if p3=1 then
       begin
       for
        k:=1 to length(s3) do
         for c:=1 to p2 do
         write(f2,s3[k]);
       end
       else if p3=2 then
        begin
        for k:=length(s3) downto 1 do
         for c:=1 to p2 do
          write(f2,s3[k]);
        end;
   end
   else

   if (ord(s[1])-1)=ord(s1[l-1])
     then
      begin
       delete(s1,l,1);
       write(f2,s1);
      end
     else if ord(s[1])<=ord(s1[l-1]) then
      write(f2,s1)
  else if ((ch1>='a')and(ch2<='z'))or((ch1>='0')and(ch2<='9'))
       then begin write(f2,s); flag:=false end
       else
       write(f2,s1);
 end;
  if (flag2=false)and(s<>'') then write(f2,'-');

 end;
 close(f1);
 close(f2);
end.