// compile: g++ -o data data.cpp -std=gnu++20 -DLOCAL
// run: ./data < data.in
#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
#ifdef LOCAL
#endif
#define sz(v) ((int)(v).size())
#define PV(v) for (int i=0;i<v.size();++i)cout<<v[i]<<" ";cout<<endl;
#define INTINF 9223372036854775807
#define int long long
using namespace std;
int sum[30];
int calc(int p) {
if (p < 10) return p;
int len = 0;
for (; sum[len] < p; ++len);
int msb = pow(10, len-1);
p -= sum[len - 1];
int num = p / len;
if (p % len == 0) return (num-1) % 10;
vector<int> a; a.clear();
for (int i = num + msb; i; i /= 10) a.push_back(i % 10);
reverse(a.begin(), a.end());
return a[p % len - 1];
}
int32_t main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int pre = 9;
sum[1] = 9;
for (int i = 2; i < 20; ++i) {
pre = pre * 10;
sum[i] = sum[i-1] + i * pre;
}
int _; cin >> _;
while (_--) {
int k; cin >> k;
cout << calc(k) << endl;
}
return 0;
}
// // compile: g++ -o data data.cpp -std=gnu++20 -DLOCAL
// // run: ./data < data.in
// #include <bits/stdc++.h>
// #pragma GCC optimize("O3,unroll-loops")
// #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
// #ifdef LOCAL
// #endif
// #define sz(v) ((int)(v).size())
// #define PV(v) for (int i=0;i<v.size();++i)cout<<v[i]<<" ";cout<<endl;
// #define INTINF 9223372036854775807
// #define int long long
// using namespace std;
// int sum[30];
// int count(int num) {
// vector<int> a; a.clear();
// for (int k = num; k; k /= 10) a.push_back(k % 10);
// int n = a.size();
// int len = sum[n-1];
// len += (num - pow(10, n-1) + 1) * n;
// return len;
// }
// int calc(int pos) {
// int l = 0, r = pos, ans = -1;
// while (l <= r) {
// int mid = l + (r - l) / 2;
// if (count(mid) >= pos) r = mid - 1;
// else ans = mid, l = mid + 1;
// }
// int p = count(ans);
// vector<int> num; num.clear();
// for (int i = ans+1; i; i /= 10) num.push_back(i % 10);
// reverse(num.begin(), num.end());
// return num[pos - p - 1];
// }
// int32_t main() {
// ios::sync_with_stdio(false);
// cin.tie(nullptr);
// cout.tie(nullptr);
// int pre = 9;
// sum[1] = 9;
// for (int i = 2; i < 20; ++i) {
// pre = pre * 10;
// sum[i] = sum[i-1] + i * pre;
// }
// int _; cin >> _;
// while (_--) {
// int k; cin >> k;
// cout << calc(k) << endl;
// }
// return 0;
// }
No Comments