标签:
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;
}
标签:
原文地址:http://www.cnblogs.com/Tinamei/p/4459593.html