题解

129 条题解

  • 0
    @ 2013-03-03 08:51:36

    #include<iostream>
    #include<string>
    #include<sstream>
    using namespace std;
    string c,s; stringstream ss;
    int main()
    {
    int i;
    cin>>c;
    for(i=1;i<=2000000;++i) ss<<i;
    s=ss.str();
    if((i=s.find(c))!=-1)cout<<i+1<<endl;
    return 0;
    }

    //过二十三组 = =

  • 0
    @ 2013-02-16 10:09:59
    • @ 2013-08-27 13:47:32

      勿点 欠虐

    • @ 2013-09-28 10:11:29

      此网页欠揍 千万别点 除非想生气

    • @ 2015-02-05 13:59:11

      这个傻蛋是混球,别理他。

  • 0
    @ 2012-11-12 17:33:20

    /*

    题解:

    1.通过模拟找出字符串最小的起始数字 minf ;

    2.简单的推导表达式求出结果。

    */

    #include

    #include

    #include

    #define MAXN 210

    int n, fp , ansp;

    char str[MAXN], minf[MAXN], fir[MAXN], ans[MAXN], temp[MAXN], next[MAXN], ret[MAXN] ;

    inline void swap(char &a,char &b) //交换字符

    {

    char tmp ;

    tmp = a, a = b, b = tmp ;

    }

    void get_Adjacent(char t[], int x)//得到t相邻的数

    {//x = -1减,x = 1加1;

    char s[MAXN] ;

    int i, flag = 0 , len = strlen(t) ;

    for(i = 0 ; i = 0 && s[i] == '0' ; i --) ;

    if(i >= 0) s[i] -- ;

    if(len > 1 && s[0] == '0') flag = -1 ;

    for(i=i+1 ; i < len ; i ++) s[i] = '9' ;

    }

    else

    {

    for(i = len-1 ; i >= 0 && s[i] == '9' ; i --) ;

    if(i >= 0) s[i] ++ ;

    else flag = 1 ;

    for(i = i + 1; i < len ; i ++) s[i] = '0' ;

    }

    i = 0 ;

    if(flag == 1) next = '1' ;

    for(; i < len+flag ; i ++) next[i] = s ; next[i] = '\0' ;

    }

    bool judgment(int p, int len )//判断是否是999991000000这种情况;

    {

    int i ;

    if(str[p] != '1') return false ;

    for(i = 1 ; i < p ; i ++)

    if(str[i] != '9') return false ;

    for(i = 1 ; i+p ls) return ;

    if(lt < ls)

    {

    strcpy(s,t) ; ansp = fp ;

    return ;

    }

    for(i = 0 ; i < ls ; i ++)

    {

    if(s[i] > t[i]) break ;

    else if(s[i] < t[i]) return ;

    }

    strcpy(s,t) ;

    ansp = fp ;

    }

    void find_FirstNumber()//找到字符串的开始数字;

    {

    int i, j, k, l, len , cnt;

    for(i = 0 ; i < MAXN-2 ; i++) minf[i] = 'A' ; minf[MAXN-1] = '\0' ;

    for(l = 1 ; l

  • 0
    @ 2012-10-16 13:19:04

    VijosNT Mini 2.0.5.7 Special for Vijos

    编译通过...

    ├ 测试数据 01:答案正确... (0ms, 668KB)

    ├ 测试数据 02:答案正确... (0ms, 672KB)

    ├ 测试数据 03:答案正确... (0ms, 664KB)

    ├ 测试数据 04:答案正确... (0ms, 668KB)

    ├ 测试数据 05:答案正确... (0ms, 704KB)

    ├ 测试数据 06:答案正确... (0ms, 668KB)

    ├ 测试数据 07:答案正确... (0ms, 668KB)

    ├ 测试数据 08:答案正确... (0ms, 708KB)

    ├ 测试数据 09:答案正确... (0ms, 704KB)

    ├ 测试数据 10:答案正确... (0ms, 724KB)

    ├ 测试数据 11:答案正确... (0ms, 932KB)

    ├ 测试数据 12:答案正确... (0ms, 704KB)

    ├ 测试数据 13:答案正确... (0ms, 812KB)

    ├ 测试数据 14:答案正确... (0ms, 708KB)

    ├ 测试数据 15:答案正确... (0ms, 664KB)

    ├ 测试数据 16:答案正确... (0ms, 664KB)

    ├ 测试数据 17:答案正确... (0ms, 664KB)

    ├ 测试数据 18:答案正确... (0ms, 668KB)

    ├ 测试数据 19:答案正确... (0ms, 668KB)

    ├ 测试数据 20:答案正确... (0ms, 704KB)

    ├ 测试数据 21:答案正确... (0ms, 704KB)

    ├ 测试数据 22:答案正确... (0ms, 704KB)

    ├ 测试数据 23:答案正确... (0ms, 704KB)

    ├ 测试数据 24:答案正确... (0ms, 704KB)

    ├ 测试数据 25:答案正确... (0ms, 1064KB)

    ├ 测试数据 26:答案正确... (0ms, 1052KB)

    ├ 测试数据 27:答案正确... (0ms, 664KB)

    ├ 测试数据 28:答案正确... (0ms, 740KB)

    ├ 测试数据 29:答案正确... (0ms, 1292KB)

    ├ 测试数据 30:答案正确... (0ms, 812KB)

    ├ 测试数据 31:答案正确... (0ms, 816KB)

    ├ 测试数据 32:答案正确... (0ms, 928KB)

    ├ 测试数据 33:答案正确... (0ms, 844KB)

    ├ 测试数据 34:答案正确... (0ms, 664KB)

    ├ 测试数据 35:答案正确... (0ms, 704KB)

    ├ 测试数据 36:答案正确... (0ms, 1484KB)

    ├ 测试数据 37:答案正确... (0ms, 1176KB)

    ├ 测试数据 38:答案正确... (0ms, 812KB)

    ├ 测试数据 39:答案正确... (0ms, 824KB)

    ├ 测试数据 40:答案正确... (0ms, 964KB)

    ---|---|---|---|---|---|---|---|-

    Accepted / 100 / 0ms / 1484KB

    type

    numtype=record

    len:longint;

    num:array[1..300] of longint;

    end;

    var

    value:array[1..200] of ansistring;

    str:ansistring;

    len:longint;

    ans:numtype;

    function convert(a:ansistring):numtype;

    var

    i:longint;

    begin

    fillchar(convert,sizeof(convert),0);

    convert.len:=length(a);

    for i:=1 to convert.len do

    convert.num[i]:=ord(a[convert.len-i+1])-48;

    end;

    procedure dfs(dep,now:longint);

    var

    i:longint;

    tmp:numtype;

    procedure min(var a,b:numtype);

    var

    i:longint;

    begin

    if b.lenb.num[i] then a:=b;

    end;

    end;

    function max(a,b:longint):longint;

    begin

    if a>b then max:=a

    else max:=b;

    end;

    function last(var a:ansistring):ansistring;

    var

    j:longint;

    begin

    last:=a;

    j:=length(last);

    last[j]:=pred(last[j]);

    while last[j]1) and (next[j]>'9') do

    begin

    next[j]:='0';

    dec(j);

    inc(next[j]);

    end;

    if next[1]>'9' then

    begin

    next[1]:='0';

    next:='1'+next;

    end;

    end;

    function left(a:ansistring;var b:ansistring):boolean;

    var

    i:longint;

    begin

    if length(b)>length(a) then exit(false);

    left:=true;

    for i:=1 to length(b) do

    if a[i]b[i] then

    begin

    left:=false;

    break;

    end;

    end;

    function right(a:ansistring;var b:ansistring):boolean;

    var

    i:longint;

    begin

    if length(b)>length(a) then exit(false);

    right:=true;

    for i:=1 to length(b) do

    if a[length(a)-length(b)+i]b[i] then

    begin

    right:=false;

    break;

    end;

    end;

    function match(var a:ansistring;b:ansistring):ansistring;

    var

    tmp:ansistring;

    lb,i,j:longint;

    flag:boolean;

    begin

    lb:=length(b);

    tmp:=b;

    b:=next(b);

    if length(b)>lb then delete(b,1,1);

    for i:=1 to length(a)+1 do

    if length(a)-i+11) and (jian.num[jian.len]=0) do dec(jian.len);

    end;

    function cheng(a:numtype;b:longint):numtype;

    var

    i:longint;

    begin

    fillchar(cheng,sizeof(cheng),0);

    for i:=1 to a.len do

    cheng.num[i]:=a.num[i]*b;

    for i:=1 to a.len+3 do

    begin

    inc(cheng.num,cheng.num[i] div 10);

    cheng.num[i]:=cheng.num[i] mod 10;

    end;

    while (i>1) and (cheng.num[i]=0) do dec(i);

    cheng.len:=i;

    end;

    function find(a:ansistring):numtype;

    var

    tmp,t:numtype;

    i:longint;

    begin

    tmp:=convert(a);

    t:=convert('9');

    find:=convert('0');

    for i:=1 to tmp.len-1 do

    begin

    find:=jia(find,cheng(t,i));

    t:=cheng(t,10);

    end;

    dec(tmp.num[tmp.len]);

    find:=jia(find,cheng(tmp,tmp.len));

    find:=jia(find,convert('1'));

    end;

    begin

    if now=3) and (i=len) then

    begin

    if left(next(value[dep-1]),value[dep]) then dfs(dep+1,i+1);

    end

    else

    begin

    if next(value[dep-1])=value[dep] then dfs(dep+1,i+1);

    end;

    end;

    end

    else

    begin

    case dep of

    2:

    begin

    if value[1][1]='0' then tmp:=jia(find('1'+value[1]),convert('1'))

    else tmp:=find(value[1]);

    end;

    3:

    begin

    tmp:=jian(find(match(value[2],value[1])),length(value[1]))

    end;

    else

    begin

    tmp:=jian(find(value[2]),length(value[1]));

    end;

    end;

    min(ans,tmp);

    end;

    end;

    procedure print(var a:numtype);

    var

    i:longint;

    begin

    for i:=a.len downto 1 do

    write(a.num[i]);

    writeln;

    end;

    begin

    readln(str);

    len:=length(str);

    ans.len:=300;

    dfs(1,1);

    print(ans);

    end.

  • 0
    @ 2012-08-23 21:56:36

    VijosNT Mini 2.0.5.7 Special for Vijos

    foo.pas(10,8) Warning: Variable "a" does not seem to be initialized

    ├ 测试数据 01:答案正确... (663ms, 1020KB)

    ├ 测试数据 02:答案正确... (721ms, 1020KB)

    ├ 测试数据 03:答案正确... (38ms, 1020KB)

    ├ 测试数据 04:答案正确... (38ms, 1020KB)

    ├ 测试数据 05:答案正确... (14ms, 1020KB)

    ├ 测试数据 06:答案正确... (10ms, 1020KB)

    ├ 测试数据 07:答案正确... (14ms, 1020KB)

    ├ 测试数据 08:答案正确... (22ms, 1020KB)

    ├ 测试数据 09:答案错误... (26ms, 1020KB)

    ├ 测试数据 10:答案正确... (22ms, 1020KB)

    ├ 测试数据 11:答案正确... (10ms, 1020KB)

    ├ 测试数据 12:答案正确... (7ms, 1020KB)

    ├ 测试数据 13:答案错误... (22ms, 1020KB)

    ├ 测试数据 14:答案正确... (18ms, 1020KB)

    ├ 测试数据 15:答案正确... (0ms, 1020KB)

    ├ 测试数据 16:答案正确... (0ms, 1020KB)

    ├ 测试数据 17:答案错误... (7ms, 1020KB)

    ├ 测试数据 18:答案正确... (0ms, 1020KB)

    ├ 测试数据 19:答案正确... (0ms, 1020KB)

    ├ 测试数据 20:答案正确... (0ms, 1020KB)

    ├ 测试数据 21:答案正确... (46ms, 1020KB)

    ├ 测试数据 22:答案错误... (22ms, 1020KB)

    ├ 测试数据 23:答案错误... (10ms, 1020KB)

    ├ 测试数据 24:答案错误... (0ms, 1020KB)

    ├ 测试数据 25:答案正确... (0ms, 1020KB)

    ├ 测试数据 26:答案错误... (0ms, 1020KB)

    ├ 测试数据 27:答案错误... (14ms, 1020KB)

    ├ 测试数据 28:答案错误... (30ms, 1020KB)

    ├ 测试数据 29:答案错误... (10ms, 1020KB)

    ├ 测试数据 30:答案错误... (14ms, 1020KB)

    ├ 测试数据 31:答案错误... (0ms, 1020KB)

    ├ 测试数据 32:答案正确... (3ms, 1020KB)

    ├ 测试数据 33:答案错误... (0ms, 1020KB)

    ├ 测试数据 34:答案错误... (0ms, 1020KB)

    ├ 测试数据 35:答案错误... (0ms, 1020KB)

    ├ 测试数据 36:答案正确... (3ms, 1020KB)

    ├ 测试数据 37:答案错误... (0ms, 1020KB)

    ├ 测试数据 38:答案错误... (0ms, 1020KB)

    ├ 测试数据 39:答案错误... (0ms, 1020KB)

    ├ 测试数据 40:答案正确... (0ms, 1020KB)

    ---|---|---|---|---|---|---|---|-

    Unaccepted / 64 / 1636ms / 1020KB

    大牛相助~!

    kmp算法为何有错?

    var

    a,b,oo:ansistring;

    p:array[1..300]of longint;

    i,j,n,m:longint;

    begin

    readln(b);

    for i:=1 to 10000 do

    begin

    str(i,oo);

    a:=a+oo;

    end;

    n:=length(a);

    m:=length(b);

    p[1]:=0;

    j:=0;

    for i:=2 to m do

    begin

    while (j>0) and (b[j+1]b[i]) do j:=p[j];

    if b[j+1]=b[i] then j:=j+1;

    p[i]:=j;

    end;

    j:=0;

    for i:=1 to n do

    begin

    while (j>0) and (b[j+1]a[i]) do j:=p[j];

    if b[j+1]=a[i] then j:=j+1;

    if j=m then

    begin

    writeln(i-m+1);

    halt;

    end;

    end;

    end.

  • 0
    @ 2012-08-20 22:41:25

    ├ 测试数据 01:答案正确... (30ms, 616KB)

    ├ 测试数据 02:答案正确... (53ms, 616KB)

    ├ 测试数据 03:答案正确... (30ms, 616KB)

    ├ 测试数据 04:答案正确... (34ms, 616KB)

    ├ 测试数据 05:答案正确... (0ms, 688KB)

    ├ 测试数据 06:答案正确... (0ms, 616KB)

    ├ 测试数据 07:答案正确... (14ms, 724KB)

    ├ 测试数据 08:答案正确... (30ms, 688KB)

    ├ 测试数据 09:运行超时... (?, 984KB)

    ├ 测试数据 10:答案正确... (42ms, 616KB)

    ├ 测试数据 11:答案正确... (0ms, 984KB)

    ├ 测试数据 12:答案错误... (237ms, 984KB)

    ├ 测试数据 13:运行超时... (?, 984KB)

    ├ 测试数据 14:答案正确... (0ms, 984KB)

    ├ 测试数据 15:答案正确... (0ms, 616KB)

    ├ 测试数据 16:答案正确... (0ms, 616KB)

    ├ 测试数据 17:运行超时... (?, 984KB)

    ├ 测试数据 18:答案正确... (0ms, 688KB)

    ├ 测试数据 19:答案正确... (0ms, 984KB)

    ├ 测试数据 20:答案正确... (0ms, 984KB)

    ├ 测试数据 21:答案正确... (22ms, 984KB)

    ├ 测试数据 22:运行超时... (?, 984KB)

    ├ 测试数据 23:运行超时... (?, 984KB)

    ├ 测试数据 24:运行超时... (?, 984KB)

    ├ 测试数据 25:答案正确... (0ms, 688KB)

    ├ 测试数据 26:运行超时... (?, 984KB)

    ├ 测试数据 27:运行超时... (?, 984KB)

    ├ 测试数据 28:运行超时... (?, 984KB)

    ├ 测试数据 29:运行超时... (?, 984KB)

    ├ 测试数据 30:运行超时... (?, 984KB)

    ├ 测试数据 31:运行超时... (?, 984KB)

    ├ 测试数据 32:答案正确... (10ms, 984KB)

    ├ 测试数据 33:运行超时... (?, 984KB)

    ├ 测试数据 34:运行超时... (?, 984KB)

    ├ 测试数据 35:运行超时... (?, 984KB)

    ├ 测试数据 36:答案正确... (0ms, 688KB)

    ├ 测试数据 37:运行超时... (?, 984KB)

    ├ 测试数据 38:运行超时... (?, 984KB)

    ├ 测试数据 39:运行超时... (?, 984KB)

    ├ 测试数据 40:答案正确... (0ms, 984KB)

    ---|---|---|---|---|---|---|---|-

    Unaccepted / 62 / ? / 984KB

    暴力62分,想想有别的办法没

  • 0
    @ 2012-08-08 21:11:05

    高精度去死吧!

    为此我专门写了一个头文件。。。。。。

    #ifndef HUGEINT

    #define HUGEINT

    #include

    using namespace std;

    class hugeint

    {

    //---|---|---|---|---|---|---|-以下为友元---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|-

    friend istream operator>> (istream&,hugeint&);

    friend ostream operator (istream& is)

    {

    int i;

    is>>s;

    len=s.size();

    for (i=1;i

  • 0
    @ 2010-07-09 17:35:15

    var a,b,r:ansistring;

    x,i:longint;

    begin

    readln(b);

    for i:=1to 100000do

    begin

    str(i,r);

    a:=a+r;

    end;

    x:=pos(b,a);

    writeln(x);

    end.

    暴力55

  • 0
    @ 2010-07-05 09:17:54

    发现KMP之比暴力破解多3分 我无奈地囧了

  • 0
    @ 2009-11-15 20:48:36

    有没有人知道第32组数据是多少啊...我怎么都过不了第32组数据....和题解里面的数据全部拍了是一样的啊,,ural上的数据也拍了也是一样的啊....ural上第32组数我也是错的,,,....有没有人能告诉我饿..???

  • 0
    @ 2009-11-10 10:38:27

    program p12;

    var i:int64;

    S:ansistring;

    ss,st:string;

    begin

    i:=0;

    s:='';

    readln(ss);

    repeat

    inc(i);

    str(i,st);

    s:=s+st;

    until pos(ss,s)0 ;

    writeln(pos(ss,s));

    end.

    精简的程序、、52分、、但是性价比高啊

  • 0
    @ 2009-11-09 14:29:53

    编译通过...

    ├ 测试数据 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

    ├ 测试数据 21:答案正确... 0ms

    ├ 测试数据 22:答案正确... 0ms

    ├ 测试数据 23:答案正确... 0ms

    ├ 测试数据 24:答案正确... 0ms

    ├ 测试数据 25:答案正确... 0ms

    ├ 测试数据 26:答案正确... 0ms

    ├ 测试数据 27:答案正确... 0ms

    ├ 测试数据 28:答案正确... 0ms

    ├ 测试数据 29:答案正确... 0ms

    ├ 测试数据 30:答案正确... 0ms

    ├ 测试数据 31:答案正确... 0ms

    ├ 测试数据 32:答案正确... 0ms

    ├ 测试数据 33:答案正确... 0ms

    ├ 测试数据 34:答案正确... 0ms

    ├ 测试数据 35:答案正确... 0ms

    ├ 测试数据 36:答案正确... 0ms

    ├ 测试数据 37:答案正确... 0ms

    ├ 测试数据 38:答案正确... 0ms

    ├ 测试数据 39:答案正确... 0ms

    ├ 测试数据 40:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

  • 0
    @ 2009-11-08 08:55:41

    求求上帝把这道题删掉,这种比一般恶心更恶心的题目,迫害我们oier的大脑!!!!

  • 0
    @ 2009-11-07 17:33:11

    对于这种KMP都过不去的题...



    Orz

  • 0
    @ 2009-11-04 19:41:54

    编译通过...

    ├ 测试数据 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

    ├ 测试数据 21:答案正确... 0ms

    ├ 测试数据 22:答案正确... 0ms

    ├ 测试数据 23:答案正确... 0ms

    ├ 测试数据 24:答案正确... 0ms

    ├ 测试数据 25:答案正确... 0ms

    ├ 测试数据 26:答案正确... 0ms

    ├ 测试数据 27:答案正确... 0ms

    ├ 测试数据 28:答案正确... 0ms

    ├ 测试数据 29:答案正确... 0ms

    ├ 测试数据 30:答案正确... 0ms

    ├ 测试数据 31:答案正确... 0ms

    ├ 测试数据 32:答案正确... 0ms

    ├ 测试数据 33:答案正确... 0ms

    ├ 测试数据 34:答案正确... 0ms

    ├ 测试数据 35:答案正确... 0ms

    ├ 测试数据 36:答案正确... 0ms

    ├ 测试数据 37:答案正确... 0ms

    ├ 测试数据 38:答案正确... 0ms

    ├ 测试数据 39:答案正确... 0ms

    ├ 测试数据 40:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    膜拜huyue神牛的数据‘0’直接让我由92分变AC!

    注意全‘0’的情况!

  • 0
    @ 2009-11-01 13:34:14

    感动啊~ 终于A了~

    ural上有大量数据~

  • 0
    @ 2009-10-30 19:25:25

    const

    maxl = 2000;

    type

    bitnode = array[0..maxl+1]of longint;

    var

    len, c,n: longint;

    t : array[1..maxl]of shortint;

    best, a, b : bitnode;

    procedure init;

    var

    st : string[200];

    i : longint;

    begin

    readln(st);

    len := length(st);

    for i := 1 to len do begin

    t[i] := ord(st[i])-48;

    end;

    end;

    procedure dec1(var a : bitnode);

    var i : longint;

    begin

    i := 1;

    while a[i] = 0 do begin

    a[i] := 9; inc(i);

    end;

    dec(a[i]);

    if (a[0] > 1) and (a[a[0]] = 0) then dec(a[0]);

    end;

    procedure inc1(var a : bitnode);

    var i : longint;

    begin

    i := 1;

    inc(a[i]);

    while a[i] = 10 do begin

    a[i] := 0;

    inc(i);

    inc(a[i]);

    end;

    if a[a[0]+1] 0 then inc(a[0]);

    end;

    function match(i : longint) : boolean;

    var j : longint;

    begin

    if a[0] < i then begin

    if t[1] 8 then exit(false);

    for j := 1 to a[0] do begin

    if t a[j] then exit(false);

    end;

    exit(true);

    end else begin

    for j := 1 to i do

    if t a[j] then exit(false);

    exit(true);

    end;

    end;

    function can(i : longint) : boolean;

    var j : longint;

    begin

    while i < len do begin

    inc1(b);

    j := i+1;

    while (j b[0] then exit(true);

    if a[0] < b[0] then exit(false);

    for i := a[0] downto 1 do begin

    if a[i] > b[i] then exit(true);

    if a[i] < b[i] then exit(false);

    end;

    exit(false);

    end;

    procedure main;

    var l, i, j, tem : longint; flag : boolean;

    begin

    flag := true;

    for i := 1 to len do if t[i] 0 then begin flag := false; break; end;

    if flag then begin

    best[0] := len+1; best[best[0]] := 1; c := 1;

    print;

    end;

    for i := 1 to len do best[i] := t[len-i+1];

    best[0] := len;

    if t[1] = 0 then begin

    inc(best[0]);

    best[best[0]] := 1;

    end;

    for i := len-len shr 1-1 downto 0 do begin

    flag := true;

    for j := 1 to i do if t[j] t[len-i+j] then begin

    flag := false; break;

    end;

    if flag then begin

    a[0] := len-i;

    tem := 0;

    for j := 1 to a[0] do a[j] := t[a[0]-j+1];

    for j := 1 to a[0]-i do begin

    if (a[a[0]] 0) and ((i = 0) or (a[1] 9) or (t 9)) then if bigger(best, a) then begin best := a; c := tem; end;

    a[a[0]+1] := a[1];

    for l := 1 to a[0] do a[l] := a[l+1];

    a[a[0]+1] := 0;

    inc(tem);

    end;

    end;

    end;

    for l := 1 to best[0] do begin

    for i := l downto 1 do if (i < len) and (t 0) then begin

    fillchar(b, sizeof(b), 0);

    b[0] := l;

    for j := l downto 1 do begin

    if i+l-j+1 > len then break;

    b[j] := t;

    end;

    if (b[0] = 1) and (b[1] = 1) then continue;

    a := b; dec1(a);

    if match(i)

    and can(i+l) then begin

    if bigger(best, a) then begin

    c := a[0]-i;

    best := a;

    end;

    end;

    end;

    end;

    print;

    end;

    begin

    init;

    main;

    end.

  • 0
    @ 2009-10-24 14:58:21

    这题够损!

    编译通过...

    ├ 测试数据 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

    ├ 测试数据 21:答案正确... 0ms

    ├ 测试数据 22:答案正确... 0ms

    ├ 测试数据 23:答案正确... 0ms

    ├ 测试数据 24:答案正确... 0ms

    ├ 测试数据 25:答案正确... 0ms

    ├ 测试数据 26:答案正确... 0ms

    ├ 测试数据 27:答案正确... 0ms

    ├ 测试数据 28:答案正确... 0ms

    ├ 测试数据 29:答案正确... 0ms

    ├ 测试数据 30:答案正确... 0ms

    ├ 测试数据 31:答案正确... 0ms

    ├ 测试数据 32:答案正确... 0ms

    ├ 测试数据 33:答案正确... 0ms

    ├ 测试数据 34:答案正确... 0ms

    ├ 测试数据 35:答案正确... 0ms

    ├ 测试数据 36:答案正确... 0ms

    ├ 测试数据 37:答案正确... 0ms

    ├ 测试数据 38:答案正确... 0ms

    ├ 测试数据 39:答案正确... 0ms

    ├ 测试数据 40:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    #include

    using namespace std;

    typedef int array[410];

    int n;

    int test1(array a,int p,int q)

    {

    int flag=0,f,i,j,k,p1,q1,pp,qq;

    array b,c;

    p1=p;q1=q;

    do

    {

    pp=p;qq=q;

    for (i=p;i=q+1;i--)

    {

    b[i]=a;

    if (b>=10)

    {

    b-=10;

    b[i]++;

    }

    }

    if (flag) b[q+1]=1;

    for (i=q+1;in) break;

    if (a[i]!=b[i]) return 0;

    }

    p=qq+1;

    q=2*qq-pp+flag+1;

    }while (i

  • 0
    @ 2009-10-19 21:44:16

    暴力55分啊

    program p1005;

    var

    s,s1,a,a1:string;

    i,l,ll:int64;

    j:longint;

    t:boolean;

    begin

    readln(s);

    l:=length(s);

    a:='';

    ll:=1;

    i:=1;

    while t=false do

    begin

    str(i,s1);

    a1:=a+s1;

    for j:=1 to length(a1)-l+1 do

    if copy(a1,j,l)=s then

    begin

    writeln(j+ll-1);

    t:=true;

    break;

    end;

    if length(a1)>=l then

    ll:=ll+length(a1)-l+1;

    a:=copy(a1,length(a1)-l+2,l-1);

    i:=i+1

    end;

    end.

    程序简便么用啊

信息

ID
1005
难度
8
分类
字符串 | KMP 点击显示
标签
(无)
递交数
6710
已通过
634
通过率
9%
被复制
33
上传者