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