Digit

Accepted : 85   Submit : 308
Time Limit : 1000 MS   Memory Limit : 65536 KB 

题目描述

我们把十进制整数依次写成一个字符串,123456789101112…请问第n位数码是多少?

输入

第一行是一个整数T(T≤10000),表示样例的个数。 每行输入一个整数n(1≤n≤788888899)。

输出

每行输出一个样例的结果。

样例输入

2
1
788888899

样例输出

1
1 理解不了什么意思,先存着= =|| 理解之后回来看看^_^ #include <cstdio>
#include <cstring>
#include <math.h>
#include <iostream>
#include <algorithm> using namespace std; __int64 num[15]={0,9,99,999,9999,99999,999999,9999999,99999999,999999999,9999999999}; // 几位数,临界值
__int64 sum[15]; //几位数之前有多少数 int main ()
{
    int i, t;
    int n, m, Sum;
    sum[0] = 0;
    for (i=1; i<11; i++)
        sum[i] = sum[i-1] + (num[i]-num[i-1])*i; // 这个数是一个i位数,之前有多少数。2位数之前有9位数,3位数开始之前有189个位
    scanf ("%d", &t);
    while (t --)
    {
        scanf ("%d", &n);
        i = 1;
        while (n > sum[i])
            i ++; // n 这个数是在一个i位数中间的一个数         n -= sum[i-1]; //n变成了 这个i位数开始之后的n位数
n = n % i;  // n是这个i位数中的第n位
        Sum = num[i-1] + n / i; // num【i-1】是这个i位数开始之前的数,n/i是指第几个i位数,n是在Sum中的某一位
        m = (num[i] - num[i-1])/9; //几位数,m后就有几个零
       
        int s; //存结果
        if (n == 0)
            s = Sum % 10; // n等于0表示是这个数的最后一位
        else
        {
            Sum ++; // n大于0表示已经超过i位了,所以要加一,就是第n位在Sum+1这个数里边
            while (n --)
            {
                s = (Sum / m) % 10; // 求第n位是多少
                m /= 10;
            }
        }
        printf ("%d\n", s);
    }
    return 0;
} Do you understand?^_^||

最新文章

  1. 漫谈C语言结构体struct、公用体union空间占用
  2. UVA1103
  3. RobotFrameWork接口报文测试-----(三)demo的加强版(数据驱动测试)
  4. PHP和AJAX笔记汇总
  5. Java-HTTP连接时如何使用代理(二)—— Proxy类方式
  6. notepad++采用正则表达式删除空行
  7. thinkphp对文件的上传,删除,下载操作
  8. 1.2 Coin 项目
  9. Mqtt协议IOS移植完1
  10. Swing-GridBagLayout用法-入门
  11. Python中的冒泡排序
  12. 对于java中的&quot;\&quot;和&quot;/&quot;&#160;区别
  13. day38数据库MySQL基础
  14. Java接口简单理解
  15. 基于汇编的 C/C++ 协程 - 切换上下文
  16. JAR包中的MANIFEST.MF文件详解以及编写规范
  17. jQuery获取属性值的方法
  18. 虚拟化 - kvm安装
  19. Cppcheck代码分析上
  20. sqlplus客户端 navicat 使用sqlplus OCI

热门文章

  1. tomcat中的server.xml文件配置了URIEncoding=&quot;UTF-8&quot;需要注意的问题
  2. 【BASIS系列】SAP BASIS模块-后台配置的传输
  3. 洛谷T89643 escape
  4. 校内模拟赛 : Rima —— 字典树+树形DP
  5. AdaGrad Algorithm and RMSProp
  6. C++学习笔记(三)--数组、字符串
  7. java实现mysql数据库从一张表插入数据到另一张表
  8. C#中out和ref的区别
  9. ssh-keygen - 认证密钥的产生, 管理和转换
  10. XML及XML的解析