Files
2024-06-03 16:57:59 +02:00

55 lines
1.2 KiB
C++

// Digit Queries
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
long long int power(ll base, ll exp)
{
if (exp == 0)
return 1;
else if (exp == 1)
return base;
else
{
long long int calc;
if (exp % 2 == 0)
{
calc = power(base, exp/2);
calc *= calc;
}
else
{
calc = base*power(base, exp-1);
}
return calc;
}
}
int main() {
ll q; cin >> q;
for (ll _{}; _ < q; _++) {
ll k; cin >> k;
if (k < 10) {cout << k << endl; continue;}
ll number_length = 1;
ll highest_idx = 0;
while (highest_idx < k) {
highest_idx += number_length * 9 * power(10, number_length-1);
number_length++;
}
number_length--;
ll pos = k - highest_idx + number_length * 9 * power(10, number_length - 1) - 1;
ll number = pos / (number_length);
number += power(10, number_length - 1);
// cout << number << " " << number_length << endl;
ll decimal_pos = pos % number_length;
ll out = (number / (power(10, number_length - decimal_pos - 1))) % 10 ;
cout << out << endl;
}
return 0;
}