s.c (600B)
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <stdint.h> 5 6 int solve() 7 { 8 uint64_t acc; 9 uint64_t k; 10 uint64_t n; 11 uint64_t p; 12 uint64_t b; 13 uint64_t d; 14 int i; 15 int j; 16 17 scanf("%llu", &k); 18 19 if (k < 10) { 20 printf("%llu\n", k); 21 return 0; 22 } 23 24 n = 9; 25 acc = 0; 26 b = 1; 27 28 for (i = 1; i < 100; i++, n *= 10) { 29 acc += i * n; 30 if (k <= acc) 31 break; 32 b *= 10; 33 } 34 35 p = (k - (acc - (i *n))) - 1; 36 n = b + (p / i); 37 d = p % i; 38 39 for (j = 0; j < i - d - 1; j++) 40 n/=10; 41 42 printf("%llu\n", n % 10); 43 44 return 0; 45 } 46 47 int main() 48 { 49 int t; 50 scanf("%d", &t); 51 while (t--) 52 solve(); 53 }