zoukankan      html  css  js  c++  java
  • Digit

    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 ", s);
        }
        return 0;
    }

    Do you understand?^_^||
    让未来到来 让过去过去
  • 相关阅读:
    SharePoint 2013 APP 开发示例 (六)服务端跨域访问 Web Service (REST API)
    麦咖啡导致电脑不能上网
    SharePoint 2013 Central Admin 不能打开
    SharePoint 2013 APP 开发示例 (五)跨域访问 Web Service (REST API)
    SharePoint 2013 APP 开发示例 系列
    synthesize(合成) keyword in IOS
    Git Cmd
    简单的正则匹配
    Dropbox
    SQL Server Replication
  • 原文地址:https://www.cnblogs.com/Tinamei/p/4459593.html
Copyright © 2011-2022 走看看