68 条题解

  • 1
    @ 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];
            }
        }
    }
    
  • 1
    @ 2016-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.

  • 0
    @ 2015-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.

  • 0
    @ 2015-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.

  • 0
    @ 2015-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.

  • 0
    @ 2013-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.
    求指教第十个点错了!为什么?

  • 0
    @ 2012-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.

    往下翻了翻发现我的过程名竟然和 林小雅 的一样……

    雷同纯属巧合

  • 0
    @ 2012-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'

    以下就是简单的模拟,

  • 0
    @ 2012-08-15 11:38:45

    就是说。。。第一数组别噎着藏着。。。只管开,要不你第16个点过不去的。。。

    第二n=3时有m

  • 0
    @ 2009-11-11 22:57:05

    巨繁琐

  • 0
    @ 2009-11-07 15:34:10

    讨厌的题目

  • 0
    @ 2009-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啊!!!!!!

  • 0
    @ 2009-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了好几次。。。我的通过率。。。。

  • 0
    @ 2009-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

  • 0
    @ 2009-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 .

  • 0
    @ 2009-10-09 19:17:55

    奇怪,交了两次才过。

  • 0
    @ 2009-10-04 14:28:47

    我悲剧了~~~~交了4次O,O

  • 0
    @ 2009-09-14 18:05:16

    很简单 !

    细心点就有了

    通过率 不应该 这么点

    我都会 应该都会啊

    开始 把附加的‘Immorta1’的‘1’(yī)写成了 l(e:l)

    相当郁闷

    纪念我的第五十个AC,再接再厉……

  • 0
    @ 2009-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.

  • 0
    @ 2009-09-06 09:35:57

    晕,ansistring开成了string

    结果puppy报超时???

    我的AC率啊~~~~

信息

ID
1405
难度
6
分类
字符串 | 模拟 点击显示
标签
(无)
递交数
1362
已通过
344
通过率
25%
被复制
3
上传者