digit_queries_2431.cpp (388B)
1 #include <iostream> 2 3 int f(long long k) { 4 long long n{1}, p{1}, d{1}, q{9}; 5 while (p + d*q <= k) { 6 n += q; 7 p += d * q; 8 d++; 9 q *= 10; 10 } 11 long long x{(k-p) / d + n}; 12 long long m{(k-p) % d}; 13 for (long long j = 0; j < d-m-1; j++) 14 x /= (long long)10; 15 return x % (long long)10; 16 } 17 18 int main() { 19 long long k; 20 std::cin >> k; 21 while (std::cin >> k) 22 std::cout << f(k) << "\n"; 23 }