标签:
我们把十进制整数依次写成一个字符串,123456789101112…请问第n位数码是多少?
第一行是一个整数T(T≤10000),表示样例的个数。 每行输入一个整数n(1≤n≤788888899)。
每行输出一个样例的结果。
2 1 788888899 样例输出
1
1
#include<stdio.h> #include<math.h> int main() { int i, j, T, b, c, y, x, t; long long ac[20]={0}, a, n; for(i = 1; i <= 9; i++) { a = 9; for(j = 1; j < i; j++) a = a * 10; ac[i] = i * a; } scanf("%d", &T); while(T--) { scanf("%I64d", &n); if(n < 10) { printf("%I64d\n", n); continue; } for(i = 1; i <= 9; i++) { n -= ac[i]; if(n <= 0) { n += ac[i]; b = i; break; } } t = 1; for (i = 1; i < b; i++) t *= 10; x = n / b; if (x != 0) x--; y = n % b; x += t; if (y == 0) printf("%d\n", x % 10); else { x++; c = 1; for (i = 1; i <= b-y; i++) c *= 10; printf("%d\n", (x/c)%10); } } return 0; }
标签:
原文地址:http://www.cnblogs.com/syhandll/p/4457882.html