126 条题解

  • 0
    @ 2009-10-08 22:21:51

    晒晒

    var

    n,t,x,ans:int64;

    i,remain:integer;

    st:string;

    begin

    readln(n);

    t:=0;

    x:=1;

    for i:=1 to 8 do begin

    t:=t+9*i*x;

    if t>n then break;

    x:=x*10;

    end;

    t:=t-9*i*x;

    n:=n-t;

    ans:=n div i;

    ans:=ans+x;

    remain:=n mod i;

    if remain=0 then begin

    ans:=(ans-1)mod 10;

    writeln(ans);

    end

    else begin

    str(ans,st);

    writeln(st[remain]);

    end;

    end.

  • 0
    @ 2009-10-06 15:59:40

    编译通过...

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

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

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

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

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

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

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

    var

    sum2,n,len,ans,i,j,k,sum:longint;

    s:string;

    begin

    readln(n);

    sum:=9;len:=1;k:=9;

    while sum

  • 0
    @ 2009-09-24 13:15:28

    编译通过...

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

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

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

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

    ├ 测试数据 05:答案正确... 806ms

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

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

    无敌程序O(n)级别,哈哈。

    才几行呀!!!

    var s,i:longint;

    d:string;

    begin

    readln(s);

    i:=0;

    repeat

    i:=i+1;

    str(i,d);

    if s>length(d) then s:=s-length(d) else begin writeln(d);break;end;

    until false;

    readln;

    end.

    短^100000000000000000000000000000000

  • 0
    @ 2009-09-19 20:19:56

    0ms朴素。a[i]记录i位共多少。感觉程序虽然小猥但比较清晰。

    var n,k,i,j,l:longint;

    a:array[1..10]of int64;

    begin

    readln(n);

    a[1]:=9;

    for i:=2 to 10 do a[i]:=a*10;i:=1;

    while n>a[i]*i do begin n:=n-a[i]*i;inc(i);end;

    j:=i;i:=1;

    for k:=1 to j-1 do i:=I*10;

    inc(i,n div j);

    n:=n mod j;

    l:=j;

    for j:=1 to l-n do i:=i div 10;

    writeln(i mod 10);

    end.

    • @ 2013-08-27 14:10:56

      怎么看都觉得程序有问题

  • 0
    @ 2009-09-07 22:08:38

    编译通过...

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

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

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

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

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

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

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

    朴素程序。

    a数组记录i位数共有a[i]个

    然后判断n是在第几位的数

    晒程序

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

    var

    n,i,j,sum,b,x,t:longint;

    a:array[0..10]of int64;

    s:string;

    begin

    readln(n);

    for i:=1 to 10 do

    begin

    a[i]:=9*i;

    for j:=1 to i-1 do

    a[i]:=a[i]*10;

    end;

    for i:=1 to 10 do if a[i]>=n then break;

    t:=i;sum:=n;

    for i:=1 to t-1 do sum:=sum-a[i];

    x:=sum div t;b:=1;

    for i:=1 to t-1 do

    b:=b*10;

    b:=b+x;

    sum:=sum mod t;

    if sum=0 then

    begin

    str(b-1,s);

    writeln(s[t]);

    halt;

    end;

    str(b,s);

    writeln(s[sum]);

    end.

  • 0
    @ 2009-09-05 22:13:23

    const num:array[1..9] of longint=(1,10,190,2890,38890,488890,5888890,68888890,788888890);{每一位数的第一位数的位置}

    var n,g,k,l,i:longint;

    s:string;

    begin

    read(n);

    for g:=9 downto 1 do

    if n>num[g] then begin n:=n-num[g]+1; break; end;{看一看这是一个几位数}

    l:=n mod g;

    if l=0 then l:=g;{l表示第n位是这个数的第几位}

    k:=1;

    for i:=1 to g do k:=k*10;

    k:=k div 10-1+n div g;{k表示这个数}

    str(k,s);

    writeln(s[l]);{利用字符串输出这一位数}

    end.

    15行!

    注释乱写,哪要n^5

    编译通过...

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

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

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

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

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

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

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

    一次ac

  • 0
    @ 2009-09-03 15:25:31

    编译通过...

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

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

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

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

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

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

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

    C++ 程序如下:

    #include

    #include

    using namespace std;

    /* 优化法 */

    int methodA(int _paramN)

    {

    int pow10Table[] = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000 };

    // 首先判断是不是一位数,立刻返回。

    if (_paramN > _paramN;

    // MethodA

    cout

  • 0
    @ 2009-09-02 18:48:19

    唉,用string写的猥琐程序............

    const

    c:array [1..8] of longint = (9,189,2889,38889,488889,5888889,68888889,788888889);

    var

    i,m,n,p,x,y:longint; s:string;

    begin

    readln(m); p:=1; n:=1;

    while m-c[p]>0 do begin n:=m-c[p]; inc(p);end;

    x:=n div p; y:=(n-1) mod p +1;

    if y

  • 0
    @ 2009-08-28 19:43:16

    下面的和我想的差不多

    不过我用了直到循环

    最后一个点791ms

    本来还以为会超时!

  • 0
    @ 2009-08-24 15:54:33

    注释在说什么啊?

    直接计算一次AC

    主要部分:

    for i:=1 to 100000000 do

    begin

    str(i,d);

    len:=length(d);

    n:=n-len;

    if n

  • 0
    @ 2009-08-21 23:49:52

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

    直接计算...

    看不懂注释

  • 0
    @ 2009-08-18 22:24:58

    program p1181;

    const

    line:array[1..9]of longint=(0,9,189,2889,38889,488889,5888889,68888889,788888889);

    var

    i,n,num,yushu,jiashu:longint;

    begin

    read(n);

    for num:=1 to 9 do

    if (line[num]=n) then break;

    n:=n-line[num];

    yushu:=n mod num;

    jiashu:=1;

    for i:=1 to num-1 do

    jiashu:=jiashu*10;

    n:=n div num+jiashu-1;

    if yushu>0 then

    begin

    inc(n);

    yushu:=num-yushu;

    jiashu:=1;

    for i:=1 to yushu do

    jiashu:=jiashu*10;

    yushu:=jiashu*10;

    write((n mod yushu-n mod jiashu)div jiashu);

    end

    else write(n mod 10);

    end.

  • 0
    @ 2009-08-17 11:12:27

    编译通过...

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

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

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

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

    [blue]├ 测试数据 05:答案正确... 791ms [/blue]

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

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

    var

    s,t:string;

    i,j,k,l,n,m:longint;

    begin

    read(n);

    m:=0;

    i:=0;

    while mn then

    begin

    repeat

    dec(m);

    delete(t,length(t),1);

    until m=n;

    write(copy(t,length(t),1));

    end;

    end.

  • 0
    @ 2009-08-14 21:56:03

    编译通过...

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

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

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

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

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

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

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

    VJ为何不支持**功能,即A**B=A^B,都怪程晨

  • 0
    @ 2009-08-08 22:02:48

    数据超范围..注意..枚举位数删减就好

  • 0
    @ 2009-08-01 21:06:25

    随便写了一个程序,一次AC,不能秒杀就算啦,懒得优化

    我家电脑n=10^8时要3s.....

    编译通过...

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

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

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

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

    ├ 测试数据 05:答案正确... 838ms

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

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

    var n,a,rs,b:longint;

    s:string;

    begin

    read(n);

    a:=0;

    rs:=0;

    while true do

    begin

    a:=a+1;

    str(a,s);

    b:=length(s);

    if b+rs>=n then

    begin

    write(s[n-rs]);

    halt;

    end;

    rs:=rs+b;

    end;

    end.

  • 0
    @ 2009-07-23 18:06:29

    怪盗积德你错了

    var 是不可一定义of longint=(0,9,189,2889,38889,488889,5888889,68888889,788888889);

    应该用CONST

  • 0
    @ 2009-07-20 15:23:39

    打表打出来192MB~

  • 0
    @ 2009-07-17 10:28:50

    编译通过...

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

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

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

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

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

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

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

    秒杀 哈哈哈哈。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

  • 0
    @ 2009-07-07 20:50:34

    编译通过...

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

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

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

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

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

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

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

    本人第一次 一次Ac一条程序,哇哈哈~~~

    program p1181;

    var

    i,j,k:longint;

    m,n:longint;

    s:string;

    begin

    read(n);

    if n

信息

ID
1181
难度
5
分类
模拟 点击显示
标签
递交数
1823
已通过
681
通过率
37%
被复制
6
上传者