126 条题解

  • 0
    @ 16 年前

    hint说最优是n^5?

    数学方法明明是O(lgN)

    /*1181*/

    #include "stdio.h"

    #include "string.h"

    int n;

    int num[9]={0,9+1,189+1,2889+1,38889+1,488889+1,5888889+1,68888889+1,788888889+1},

    n10[9]={0,0,10,100,1000,10000,100000,1000000,10000000};

    void ipd()

    {

    scanf("%d",&n);

    }

    void go()

    {

    int i=1,d,e,f;

    char ans[50];

    while(n>=num[i])i++;

    d=n-num;/*多几位,0起*/

    e=d/i;/*第几个,0起*/

    f=d%i;/*哪一位,0起*/

    e=n10[i]+e;

    sprintf(ans,"%d",e);

    printf("%c",ans[f]);

    }

    int main()

    {

    ipd();

    go();

    return 0;

    }

  • 0
    @ 16 年前

    编译通过...

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

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

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

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

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

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

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

    注意:把整数定义为qword,因为数据大于10^8,这也是我WA了一次的原因!

  • 0

    编译通过...

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

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

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

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

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

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

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

    成功秒杀!Maths Problem...WS...

  • 0
    @ 16 年前

    编译通过...

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

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

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

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

    ├ 测试数据 05:运行超时...

    最后一个点有多大?

  • 0
    @ 16 年前

    数学方法,先确定位数,再确定当前位的第几个数,再确定数字中的第几位

  • 0
    @ 16 年前

    program zhangji;

    var

    s:ansistring;s1:string;

    i,j,k,m:integer;

    si,n,l:qword;

    begin

    read(n);

    si:=0;

    repeat

    inc(si);

    str(si,s1);

    s:=s+s1;

    l:=length(s);

    until l>n;

    writeln(s[n]);

    end.

    用字符串好象不行 有两个超了 晕

  • 0
    @ 16 年前

    wo 汗

  • 0
    @ 16 年前

    编译通过...

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

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

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

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

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

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

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

  • 0
    @ 16 年前

    编译通过...

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

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

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

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

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

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

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

    弱弱的水题,用数学方法做一次AC

  • 0
    @ 16 年前

    用数学方法超简单

  • 0
    @ 16 年前

    编译通过...

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

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

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

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

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

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

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

  • 0
    @ 16 年前

    哇卡,多么美妙的一次AC。

    思路是确定第n位在那个数里,再找他是这个数的第几位。

    longint足够了。

    呵呵别想复杂了,我初一时做这道题是想办法模拟,结果比想象中的复杂多了。

    今天再做,10分钟20行就搞定了,我真的是进步了

  • 0
    @ 16 年前

    楼下O(1),好一个O(1),我看到3个循环

  • 0
    @ 17 年前

    出题人什么思路?O(n^5)的字符串处理?P.S.这个死题啊我……

  • 0
    @ 17 年前

    编译通过...

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

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

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

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

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

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

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

    最开始手动表打错了,卡了N久……

  • 0
    @ 17 年前

    编译通过...

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

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

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

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

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

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

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

    实践证明 本题很弱

  • 0
    @ 17 年前

    编译通过...

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

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

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

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

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

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

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

    O(1)!

  • 0
    @ 17 年前

    编译通过...

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

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

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

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

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

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

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

    我晕死!~~~~~~ 注意数据范围到了10的9次方了............. 不知我说得对不对

  • 0
    @ 17 年前

    用字符串处理超时一个点,改用数字处理就过了。

  • 0
    @ 17 年前

    #include

    int main(void)

    {

    long num[10]={0};

    long i,j,k;

    long n;

    scanf("%d",&n);

    k=1;

    for (i=1;i

信息

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