记录编号 | 213 | 评测结果 | AAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | [NOIP 2007]字符串的展开 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | 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.