认识了几个师弟,一直总想把自己的经验表达出来一些,让后面的人在更年轻的时候,认识到方向、努力。

昨天忽然想起自己在大学时候做了几天的acm,终于也没能坚持。然后就感觉带师弟们做下acm题目还是很不错。

poj还是熟悉的界面,不过大学时候注册的账号也忘记了。想起来也没有几道题目被ack~于是重新注册了个账号。

当然一下就是1019题目,还以为这道题目挺水的,结果前前后后花了一上午的时间才被ack。

-----------------关于1019题目的题意---------------------

存在一个序列,序列是这样的S1S2...Sk,每个Sk又是从1到k数字的序列。

例如该序列的前80位如下所示

11212312341234512345612345671234567812345678912345678910123456789101112345678910

要求:输入一个数字的位置,然后输出在该位置的数字。

比如 :

  3 将输出2

  8 将输出2

  80 将输出0(根据题干中序列前80位可得)

  81 将输出1(根据题干中得知序列接下来的数字是11,因此第81位输出的数字位1)

-----------------解答思路-----------------------------------------

观察序列,可知整体序列S1S2...Sk由k的子序列,同时第K个子序列是K-1个子序列加上最大的一个数字组成。

因此我的思路可以分为三个步骤:

1。确定输入位置所在的子序列

2。确定子序列中的数字(该数字可能为十位或者百位)

3。确定数字中的具体字符

-----------------具体参考代码-----------------------------------

#include <stdio.h>
#include <math.h>

int number, tmp;
int big, big_length, sub_str_length;
int sub_big, pos, result;
int array[10];
int ind;

int main()
{    
    int count;
    scanf("%d", &count);

while(count--)
    {    
        scanf("%i", &number);

  //确定子序列
        big = 1;
        sub_str_length = 1;
        while(1)
        {    
            if(sub_str_length < number)
            {
                number -= sub_str_length;
                big ++;

     //子序列最大数字长度
                tmp = big;
                big_length = 0;
                while(tmp)
                {
                    big_length++;
                    tmp = tmp/10;
                }
                sub_str_length +=  big_length;
            }else
            {
                break;
            }

}

  //所在子序列中的具体数字,及数字的位置
        pos = 0;
        sub_big = 0;
        while( pos < number)
        {
            sub_big++;
            tmp = sub_big;
            result = 0;
            while(tmp)
            {
                result ++;
                pos ++;
                if( pos == number)
                    goto print;
                
                tmp = tmp /10;
            }
        }

  //根据所在数字及在当前数字中的位置打印具体字符
        print:
            while(sub_big)
            {
                array[ind++] = sub_big % 10;
                sub_big /= 10;
            }
            printf("%d\n",  array[ind-result]);
    }
    return 0;
}

acm之poj题库1019方法的更多相关文章

  1. acm之poj题库1001方法

    题目所言是银行等不能用四舍五入等影响精度的方法来计算的情况,是为提出背景.因此需要特殊的编写.这里使用了好几种方法才找到一个合适的方法.因为C++或者C缺乏类库,又跟底层关联太大,缺乏常用的类库,在写 ...

  2. 北大POJ题库使用指南

    原文地址:北大POJ题库使用指南 北大ACM题分类主流算法: 1.搜索 //回溯 2.DP(动态规划)//记忆化搜索 3.贪心 4.图论 //最短路径.最小生成树.网络流 5.数论 //组合数学(排列 ...

  3. Java题库——Chapter5 方法

    1)Suppose your method does not return any value, which of the following keywords can be used as a re ...

  4. ACM在线题库

    现在网上有许多题库,大多是可以在线评测,所以叫做Online Judge.除了USACO是为IOI准备外,其余几乎全部是大学的ACM竞赛题库. USACO http://ace.delos.com/u ...

  5. 数据排序 第二讲( 各种排序方法 结合noi题库1.10)

    先来个题练练手吧! 例题 04:奖学金 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生 ...

  6. OnlineJudge 离线题库采集

    过段时间要把以前的OJ换掉,我负责VirtualJudge的部分.需要用C与PHP写一个Linux下的VJudge. 在此之前,将以前写给自己学弟学妹用的OJ离线题库的采集程序改进了一下.支持国内一些 ...

  7. 「浙江理工大学ACM入队200题系列」问题 A: 零基础学C/C++34—— 3个数比较大小(冒泡排序与选择排序算法)

    本题是浙江理工大学ACM入队200题第四套中的A题,同时给出了冒泡排序和选择排序算法 我们先来看一下这题的题面. 由于是比较靠前的题目,这里插一句.各位新ACMer朋友们,请一定要养成仔细耐心看题的习 ...

  8. 猿题库 iOS 客户端架构设计

    原文: http://mp.weixin.qq.com/s?__biz=MjM5NTIyNTUyMQ==&mid=444322139&idx=1&sn=c7bef4d439f4 ...

  9. NOI题库 1768最大子矩阵 题解

    NOI题库 1768最大子矩阵  题解     总时间限制: 1000ms 内存限制: 65536kB   描述   已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大 ...

随机推荐

  1. C#导入Excel遇到数字字母混合列数据丢失解决

    错误重现: ----------------------------------------------------------------------- 在导入Excel读取数据时,其中的一个字段保 ...

  2. Shell 编写准则

    Shell 中备注符号: # 或者 " 作为Shell中的备注符号. 需要注意的是,首行的#!/bin/bash 不是注释 Shell 格式 首行输入  #!/bin/bash 中间输入运行 ...

  3. failed to push some refs to 'git@github.com:***.git' hint: Updates were rejected b

    使用git push origin master的时候出现一下错误: 解决办法: git push -f origin master 如下:

  4. springMvc 报错

    org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.util.Ar ...

  5. 解决Tomcat7“At least one JAR was scanned for TLDs yet contained no TLDs”问题

    解决Tomcat7“At least one JAR was scanned for TLDs yet contained no TLDs”问题 2013-12-05 21:58:00|  分类: t ...

  6. 软件工程总结(Final)

    又到了学期末了,此时此刻软件工程课业接近尾声了.时间过得太快,仿佛昨天这学期的课才开始, 开学时,老师让我们提出了不少对这门课的问题和疑惑,通过一学期的努力学习,我可以试着解开我自己的疑问了. 下面是 ...

  7. GTC China 2016观感

    上周二在北京参加了GTC China 2016,最大的感受就是一个字,“冷”!黄教主一如既往坚持机车皮夹克装,9月中旬的北京还没有那么的冷啊,感觉全场的空调简直是为他而开...好的,以上吐槽完毕,接着 ...

  8. stray'\241'in program

    stray '\241' in program : 该错误是指源程序中有非法字符,需要去掉非法字符.一般说来,如果你从其他地方复制代码过来,可能会出现这个问题.中文空格中文引号中文各种标点符号都会引起 ...

  9. 联合(union)类型有哪些使用场景

    2013-08-22 - 18:17:50  by Gold_Lion 今天突然碰到“联合”这个数据类型了,平时用的不多,实在也想不出来它到底能帮我干嘛?于是google了一下,终于有一个是利用联合( ...

  10. java连接sql server2005

    转自:http://blog.sina.com.cn/s/blog_889b58310100zqyz.html 一:配置 第一步:在网上下载SQLServer2005的驱动包 http://www.m ...