码迷,mamicode.com
首页 > 其他好文 > 详细

Digit

时间:2015-04-27 12:41:03      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:

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;
    scanf ("%d", &t);
    while (t --)
    {
        scanf ("%d", &n);
        i = 1;
        while (n > sum[i])
            i ++;

        n -= sum[i-1];
        Sum = num[i-1] + n / i;
        m = (num[i] - num[i-1])/9;
        n = n % i;
        int s;
        if (n == 0)
            s = Sum % 10;
        else
        {
            Sum ++;
            while (n --)
            {
                s = (Sum / m) % 10;
                m /= 10;
            }
        }
        printf ("%d\n", s);
    }
    return 0;
}

Digit

标签:

原文地址:http://www.cnblogs.com/Tinamei/p/4459593.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!