68 条题解
-
1沉江底 LV 9 @ 2017-05-30 23:42:38
stl虽然好用但是还是有风险的。。。毕竟不是你自己实现的,很多边界情况不容易想到。。。
#include<iostream> #include<cstring> #include<math.h> using namespace std; int main(void) { string index; int a,b,c; cin>>index; cin>>a>>b>>c; string index1(index,0,a-1); string index2(index,a-1); //cout<<index1<<' '<<index2; switch(b) { case 1:{ for(int i=0;i<index.size();i++) { if('a'<=index[i]&&index[i]<='z') { index[i]=index[i]+'A'-'a'; } else if('A'<=index[i]&&index[i]<='Z') { index[i]=index[i]+'a'-'A'; } } index+="Immorta1"; break; } case 2:{ index=index1; while(index.find(index2)!=string::npos) { index.replace(index.find(index2),index2.size(),""); } while(index.find("1013")!=string::npos) { index.replace(index.find("1013"),4,"hh4742"); } break; } case 3:{ if(0==index1.size()) { index1+=index2; } else index1.insert(abs(a-b)-1,index2); index=index1; break; } } for(int i=0;i<index.size();i++) { for(int j=0;j<c+1;j++) { cout<<index[i]; } } }
-
12016-07-23 16:33:24@
program dsc;
var s,s1,s2:ansistring;
i,j,m,n,x,y,t,p:longint;
begin
readln(s);
readln(m,n,p);
s1:=copy(s,1,m-1);
s2:=copy(s,m,length(s)-m+1);
if n=1 then
begin
for i:=1 to length(s) do
if s[i] in ['a'..'z'] then s[i]:=upcase(s[i])
else
if s[i] in ['A'..'Z'] then s[i]:=lowercase(s[i]);
s:=s+'Immorta1';
for i:=1 to length(s) do
begin
for j:=1 to p+1 do
write(s[i]);
end;
end;
if n=2 then
begin
if pos(s2,s1)<>0 then
delete(s1,pos(s2,s1),length(S2));
repeat
t:=pos('1013',s1);
if t<>0 then
begin
delete(s1,t,4);
insert('hh4742',s1,t);
end;
until t=0;
for i:=1 to length(s1) do
begin
for j:=1 to p+1 do
write(s1[i]);
end;
halt;
end;
if n=3 then
begin
insert(s2,s1,abs(n-m));
if p=0 then
begin
writeln(s1);
halt;
end
else for i:=1 to length(s1) do
begin
for j:=1 to p+1 do
write(s1[i]);
end;
halt;
end;
end. -
02015-08-04 19:23:04@
program a1405;
var
i,j,k,l,n,m,ii,jj,kk,ll,p:longint;
s,ss,a,b,ans:ansistring;
aa,bb:char;
begin
readln(s);
ss:=s;
readln(m,n,p);
a:=copy(s,1,m-1);
b:=copy(s,m,length(s));
if n=1 then
begin
for i:=1 to length(s) do
if ((ord(s[i])>=65)and(ord(s[i])<=90))or((ord(s[i])>=97)and(ord(s[i])<=122)) then
begin
if ord(s[i])<97 then
begin
aa:=chr(ord(s[i])+32);
delete(ss,i,1);
insert(aa,ss,i);
end;
if ord(s[i])>=97 then
begin
aa:=chr(ord(s[i])-32);
delete(ss,i,1);
insert(aa,ss,i);
end;
end;
ss:=ss+'Immorta1';
end;
if n=2 then
begin
k:=pos(b,ss);
while k<>0 do
begin
delete(ss,k,length(b));
k:=pos(b,ss);
end;
k:=pos('1013',ss);
while k<>0 do
begin
delete(ss,k,4);
insert('hh4742',ss,k);
k:=pos('1013',ss);
end;
end;
if n=3 then
begin
ii:=abs(n-m)-1; jj:=abs(n-m);
insert(b,a,jj);
ss:=a;
end;
ans:='';
for i:=1 to length(ss) do
for j:=0 to p do
ans:=ans+ss[i];
writeln(ans);
end. -
02015-08-04 16:55:49@
var s,s1,a,b:ansistring;
t,m,n,p,i,j:longint;begin
assign(input,'1.txt'); reset(input);
readln(s);
readln(m,n,p);
a:=copy(s,1,m-1);
b:=copy(s,m,length(s));
if n=1 then
begin
for i:=1 to length(s) do
begin
if (ord(s[i])>64)and(ord(s[i])<91) then
s[i]:=chr(ord(s[i])+32)
else if (ord(s[i])>96)and(ord(s[i])<123) then
s[i]:=chr(ord(s[i])-32);
end;
insert('Immorta1',s,length(s)+1);
end;
if n=2 then
begin
while pos(b,s)<>0 do
begin
t:=pos(b,s);
delete(s,t,length(b));
end;
while pos('1013',s)<>0 do
begin
t:=pos('1013',s);
delete(s,t,4);
insert('hh4742',s,t);
end;
end;
if n=3 then
begin
t:=abs(n-m);
delete(s,length(s)-length(b)+1,length(b));
insert(b,s,t);
end;
for i:=1 to length(s) do
for j:=1 to p+1 do
write(s[i]);
end. -
02015-08-04 15:00:07@
program exam;
var k:int64;
i,j,m,n,t:longint;
v,vv:string;
s,g,b,a:ansistring;
begin
assign(input,'1.txt');
reset(input);
readln(s);
v:='Immorta1';
readln(m,n,k);
if n=1 then
begin
for i:=1 to length(s) do
begin
if (ord(s[i])>=65) and (ord(s[i])<=90) then
begin
s[i]:=chr(ord(s[i])+32);
continue;
end;
if (ord(s[i])>=97) and (ord(s[i])<=122) then
begin
s[i]:=upcase(s[i]);
continue;
end;
end;
s:=s+v;
if k<>0 then
for i:=1 to length(s) do
for j:=1 to k+1 do
write(s[i])
else
for i:=1 to length(s) do
write(s[i]);
end;
vv:='hh4742';
if n=2 then
begin
b:=copy(s,m,length(s));
t:=pos(b,s);
while t<>0 do
begin
delete(s,pos(b,s),length(b));
t:=pos(b,s);
end;
for i:=1 to length(s)-3 do
if (s[i]='1') and (s[i+1]='0') and (s[i+2]='1') and (s[i+3]='3') then
begin
delete(s,i,4);
insert(vv,s,i);
end;
if k<>0 then
for i:=1 to length(s) do
for j:=1 to k+1 do
write(s[i])
else
for i:=1 to length(s) do
write(s[i]);
end;
if n=3 then
begin
a:=copy(s,1,m-1);
b:=copy(s,m,length(s));
insert(b,a,abs(n-m));
if k<>0 then
for i:=1 to length(a) do
for j:=1 to k+1 do
write(a[i])
else
for i:=1 to length(a) do
write(a[i]);
end;
end. -
02013-03-30 20:17:40@
var
s,a,b,w:ansistring;
m,n,p,i,j:integer;
begin
readln(s);
readln(m,n,p);
a:=copy(s,1,m-1);
b:=copy(s,m,length(s)-m+1);
case n of
1: begin
for i:=1 to length(s) do
begin
if ('a'<=s[i])and(s[i]<='z') then begin s[i]:=chr(ord(s[i])-32); continue;end;
if ('A'<=s[i])and(s[i]<='Z') then begin s[i]:=chr(ord(s[i])+32); continue;end;
end;
s:=s+'Immorta1';
end;
2: begin
for i:=1 to length(s)-length(b)+1 do
begin
w:=copy(s,i,length(b));
if w=b then delete(s,i,length(b));
end;
for i:=1 to length(s)-4+1 do
begin
w:=copy(s,i,4);
if w='1013' then begin delete(s,i,4); insert('hh4742',s,i); end;
end;
end;
3:begin
if n-m>0 then insert(b,a,n-m) else insert(b,a,m-n);
s:=a;
end;
end;
for i:=1 to length(s) do
for j:=1 to p+1 do
write(s[i]);
end.
求指教第十个点错了!为什么? -
02012-10-27 12:28:06@
编译通过...
├ 测试数据 01:答案正确... (0ms, 616KB)
├ 测试数据 02:答案正确... (0ms, 652KB)
├ 测试数据 03:答案正确... (0ms, 688KB)
├ 测试数据 04:答案正确... (0ms, 616KB)
├ 测试数据 05:答案正确... (0ms, 616KB)
├ 测试数据 06:答案正确... (0ms, 616KB)
├ 测试数据 07:答案正确... (0ms, 616KB)
├ 测试数据 08:答案正确... (0ms, 616KB)
├ 测试数据 09:答案正确... (0ms, 652KB)
├ 测试数据 10:答案正确... (0ms, 652KB)
├ 测试数据 11:答案正确... (0ms, 652KB)
├ 测试数据 12:答案正确... (0ms, 652KB)
├ 测试数据 13:答案正确... (0ms, 688KB)
├ 测试数据 14:答案正确... (0ms, 688KB)
├ 测试数据 15:答案正确... (0ms, 1020KB)
├ 测试数据 16:答案正确... (0ms, 1020KB)
├ 测试数据 17:答案正确... (0ms, 1020KB)
├ 测试数据 18:答案正确... (0ms, 688KB)
├ 测试数据 19:答案正确... (0ms, 652KB)
├ 测试数据 20:答案正确... (0ms, 652KB)---|---|---|---|---|---|---|---|-
Accepted / 100 / 0ms / 1020KB
一次秒杀
注意,当n=1时加上的字符串是Immorta1(一)而不是Immortal(L)PS:我竟然没用数组
{
ID:darkgod-z
PROG:vijos P1405
HANG:PASCAL
}
var
s,a,b:ansistring;
m,p,i,j:integer;
n:1..3;
procedure change1;
var
i:integer;
begin
for i:=1 to length(s) do begin
if (s[i]>='A')and(s[i]='a')and(s[i]0 do delete(s,pos(b,s),length(b));
p:=pos('1013',s);
while p>0 do begin
delete(s,p,4);
insert('hh4742',s,p);
p:=pos('1013',s);
end;
end;
procedure change3;
begin
insert(b,a,abs(n-m));
s:=a;
end;
begin
readln(s);
readln(m,n,p);
if n1 then begin
a:='';
b:='';
for i:=1 to m-1 do a:=a+s[i];
for i:=m to length(s) do b:=b+s[i];
end;
case n of
1:change1;
2:change2;
3:change3;
end;
for i:=1 to length(s) do
for j:=1 to p+1 do
write(s[i]);
end.
往下翻了翻发现我的过程名竟然和 林小雅 的一样……
雷同纯属巧合 -
02012-09-02 11:28:09@
可以用以下的语句来解决繁琐的过程
函数:
upcase('a') 转化成大写'A'
lowercase('D') 转化成小写'd'
copy(s,5,6) 从s的第5位开始,取出后6位字符出来
例如: copy('abcdefghi',3,5)='cdefg'
过程:
delete(s,5,6) 从s的第5位开始,删除后6位字符出来
例如: delete('abcdefghi',3,5),字符串就变为'abhi'
insert(a,b,2) 讲a插入b的第2位
例如: insert('aaa','bbb',2) b就变为'baaabb'
以下就是简单的模拟, -
02012-08-15 11:38:45@
就是说。。。第一数组别噎着藏着。。。只管开,要不你第16个点过不去的。。。
第二n=3时有m -
02009-11-11 22:57:05@
巨繁琐
-
02009-11-07 15:34:10@
讨厌的题目
-
02009-11-07 10:20:36@
var n,m,p,i,l,c,j:longint;
st,s1:string;
begin
readln(st);
readln(m,n,p);
l:=length(st);
case n of
1:begin
for i:=1 to l do
if st[i] in ['A'..'Z'] then st[i]:=chr(ord(st[i])+32)
else if st[i] in ['a'..'z'] then st[i]:=chr(ord(st[i])-32);
st:=st+'Immorta1';
end;
2:begin
s1:=copy(st,m,l-m+1);
while pos(s1,st)0 do begin
c:=pos(s1,st);
delete(st,c,length(s1));
end;
s1:='hh4742';
while pos('1013',st)0 do begin
c:=pos('1013',st);
delete(st,c,4);
insert(s1,st,c);
end;
end;
3:begin
s1:=copy(st,m,l-m+1);
delete(st,m,l-m+1);
insert(s1,st,abs(n-m));
end;
end;
l:=length(st);
for i:=1 to l do
for j:=1 to p+1 do write(st[i])
end.
强悍的一次AC,我的RP啊!!!!!! -
02009-11-02 20:34:59@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
├ 测试数据 11:答案正确... 0ms
├ 测试数据 12:答案正确... 0ms
├ 测试数据 13:答案正确... 0ms
├ 测试数据 14:答案正确... 0ms
├ 测试数据 15:答案正确... 0ms
├ 测试数据 16:答案正确... 0ms
├ 测试数据 17:答案正确... 0ms
├ 测试数据 18:答案正确... 0ms
├ 测试数据 19:答案正确... 0ms
├ 测试数据 20:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms记住ansistring。。。靠,wa了好几次。。。我的通过率。。。。
-
02009-10-14 14:47:06@
第3种情况有非法插入的数据。。
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
├ 测试数据 11:答案正确... 0ms
├ 测试数据 12:答案正确... 0ms
├ 测试数据 13:答案正确... 0ms
├ 测试数据 14:答案正确... 0ms
├ 测试数据 15:答案正确... 0ms
├ 测试数据 16:答案正确... 0ms
├ 测试数据 17:答案正确... 0ms
├ 测试数据 18:答案正确... 0ms
├ 测试数据 19:答案正确... 0ms
├ 测试数据 20:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02009-10-10 20:54:16@
如此水题 交了3次啊..
AC率
___|\__|\__|\___|_
\
\
\
ˉ\
ˉ\
ˉ\
│
│
│
│
↓Program ex;
var
s:AnsiString ;
n,m,p:longint ;procedure change1 ;
var
i:longint ;
begin
for i := 1 to length(s) do
if s[i] in ['A'..'Z'] then
s[i] := chr(ord(s[i]) + 32) else
if s[i] in ['a'..'z'] then
s[i] := upcase(s[i]) ;
s := s + 'Immorta1' ;
end ;procedure change2 ;
var
b:AnsiString ;
i:longint ;
begin
b := copy(s,m,length(s)) ;
while pos(b,s) > 0 do
delete(s,pos(b,s),length(b)) ;
while pos('1013',s) > 0 do
begin
insert('hh4742',s,pos('1013',s)) ;
delete(s,pos('1013',s),4) ;
end ;
end ;procedure change3 ;
var
b:AnsiString ;
begin
b := copy(s,m,length(s)) ;
delete(s,m,length(b)) ;
insert(b,s,abs(n-m)) ;
end ;procedure print ;
var
i,j:longint ;
begin
for i := 1 to length(s) do
for j := 1 to p+1 do
write(s[i]) ;
writeln ;
end ;BEGIN
readln(s) ;
readln(m,n,p) ;
case n of
1 : change1 ;
2 : change2 ;
3 : change3 ;
end ;
print ;
END . -
02009-10-09 19:17:55@
奇怪,交了两次才过。
-
02009-10-04 14:28:47@
我悲剧了~~~~交了4次O,O
-
02009-09-14 18:05:16@
很简单 !
细心点就有了
通过率 不应该 这么点我都会 应该都会啊
开始 把附加的‘Immorta1’的‘1’(yī)写成了 l(e:l)
相当郁闷
纪念我的第五十个AC,再接再厉……
-
02009-09-12 15:23:13@
各位牛人!帮我检查一下程序呀~!
var
s,s1,b,s2,s3,a,a1,a2:ansistring;
m,e,n,p,i,j:longint;
begin
readln(s);
readln(m,n,p);
a:=copy(s,1,m-1);
b:=copy(s,m,length(s)-m+1);
if n=1 then begin
for i:=1 to length(s) do begin
if s[i] in ['a'..'z'] then begin
s[i]:=chr(ord(s[i])-32);
continue;
end;
if s[i] in ['A'..'Z'] then s[i]:=chr(ord(s[i])+32);
end;
s:=s+'Immorta1';
end;
if n=2 then begin
e:=length(b)-1;
for i:=1 to length(s)-e do begin
s1:=copy(s,i,e+1);
if s1=b then delete(s,i,e+1);
end;
for i:=1 to length(s)-3 do begin
s1:=copy(s,i,4);
if s1='1013' then begin
s2:=copy(s,1,i-1);
s3:=copy(s,i+4,length(s)-i-3);
s:=s2+'hh4742'+s3;
end;
end;
end;
if n=3 then begin
a1:=copy(a,1,abs(n-m)-1);
a2:=copy(a,abs(n-m),length(a)-abs(n-m)+1);
s:=a1+b+a2;
end;
for i:=1 to length(s) do
for j:=1 to p+1 do begin
write(s[i]);
end;
end. -
02009-09-06 09:35:57@
晕,ansistring开成了string
结果puppy报超时???我的AC率啊~~~~