题意:给出一串那样的数字,很有规律的,总共有2147483647位,然后问你第 n 位上的数字是多少。

思路:具体做法是用两个数组保存上面的数据。

1、[] 数组表示前面所有段的位数,a[i]表示前i段一共有多少位。

2、保存那一段具体的位数,b[]数组存储的是序列12345678910111213…各位位数对应数组的值,即b[1]=1, b[2]=2, b[3]=3, b[4]=4, b[5]=5, b[6]=6, b[7]=7, b[8]=8, b[9]=9, b[10]=1,b[11]=0, b[12]=1,b[13]=1, b[14]=1,b[15]=1, b[16]=1,b[17]=2, b[18]=1,b[19]=3

3、利用a数组计算出某段的第几位时,直接对应输出就可以b[i];

4、关键是求出是某一段多少位就可以啦。

CODE:

#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;

long long a[32768], b[200010];
char str[10];

void init()
{
    long long  s = 0, k = 1;
    for(int i = 1; i < 32768; i++)
    {
        s = s + (int)(log10(double(i)))+1;       //求数字的位数 
        a[i] = a[i-1] + s;
    }
    for(int i = 1; i < 32768; i++)
    {
        memset(str, 0, sizeof(str));
        sprintf(str, "%d", i);
        for(int j = 0; j < strlen(str); j++)
        {
            b[k++] = str[j]-'0';
        }
    }
}

int main()
{
    int T;
    scanf("%d", &T);
    init();
    while(T--)
    {
        long long q;
        scanf("%lld", &q);
        long long *p = lower_bound(a, a+32768, q);      //二分求下界,返回的是指针。 
        int ans = q-a[p-a-1];           //计算是某一子串的多少位
        printf("%lld\n", b[ans]);
    }
    return 0;
}

转载于:https://www.cnblogs.com/g0feng/archive/2012/10/15/2724605.html

UVA 10706 Number Sequence相关推荐

  1. HDU 1711 Number Sequence(KMP算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1711 Number Sequence Time Limit: 10000/5000 MS (Java/ ...

  2. 【HDU】1005 Number Sequence (有点可爱)

    http://acm.hdu.edu.cn/showproblem.php?pid=1005 A number sequence is defined as follows: f(1) = 1, f( ...

  3. HDU 1005 Number Sequence

    [题目]                                                   Number Sequence Time Limit: 2000/1000 MS (Jav ...

  4. HDU 1711 -Number Sequence(KMP)

    题目 Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  5. 【HDU - 5014】Number Sequence(贪心构造)

    题干: There is a special number sequence which has n+1 integers. For each number in sequence, we have ...

  6. (找循环节)Number Sequence

    题目: A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2) ...

  7. hdu1005 Number Sequence(寻找循环节)

    主题链接: huangjing 题意: 就是给了一个公式,然后求出第n项是多少... 思路: 题目中n的范围实在是太大,所以肯定直接递推肯定会超时,所以想到的是暴力打表,找循环节,可是也不是那么eas ...

  8. HDU.1005 Number Sequence

    原题 HDU.1005 Number Sequence 分类 杂题 题意 给定一个数列{an}\left\{ a_n \right\}{an​}的前两项a1a_1a1​.a2a_2a2​,以及其递推公 ...

  9. UVA10689 Yet another Number Sequence【数列+矩阵快速幂】

    Let's define another number sequence, given by the following function: f(0) = a f(1) = b f(n) = f(n ...

最新文章

  1. python hstack_Python学习之Numpy速成记——基础篇(中)
  2. Delphi 与 DirectX 之 DelphiX(35): TDIB.Saturation();
  3. 二分查找(等于x,小于x,小于等于x,大于x,大于等于x )
  4. 苏州php速成,PHP入门速成
  5. 查询缺少的依赖文件归属于哪个rpm包
  6. TPU和GPU跑模型时间统计(持续更新中)以及TPU Research Cloud的申请
  7. hive - 解析 json
  8. 使用yum命令安装服务时,一直卡在Loaded plugins: fastestmirror Determining fastest mirrors
  9. webstorm如何自定义代码模板
  10. python 爬取全本免费小说网的小说
  11. css background-image显示全部_CSS 与网络性能,看了都说好
  12. 软件项目管理工具简介
  13. CAN资料整理(二):CAN协议帧格式
  14. ZEMAX | 照明设计中实用的光学模拟方法
  15. VUE3模板,JSX,JSV
  16. 信息学奥赛一本通 1359:围成面积
  17. Win10以太网网络电缆被拔出,没有WLAN选项
  18. 微信小程序生成带logo二维码
  19. arduino 328P的BootLoader
  20. 原生JS制作最简单轮播图(超清晰思路)

热门文章

  1. xml.etree ElementTree简介
  2. gamma分布_深度学习需要掌握的 13 个概率分布(附代码)
  3. python全栈工程_Python全栈工程师(编码)
  4. 最终幻想4 android,《最终幻想4》安卓版发布:重温那段曲折的冒险故事
  5. glonee刷机绿色机器人无命令_小图编程机器人评测:寓教于乐,让编程变得简单有趣...
  6. 怎么看python程序卡在哪里_Python程序卡住了
  7. css border 虚线间距_【前端冷知识】CSS如何实现虚线框动画
  8. linux怎么开机默认进入桌面图标,如何让ubuntu开机默认进入命令行啊?
  9. session每次请求都是新建的吗_每次去火车站都是提心吊胆,感觉就像进了贼窝一样,有同感的吗?...
  10. centos7 yum下载路径