题解参考
注意会数据溢出,特判或者采用long long
#define debug(x) cout<<#x<<": "<<(x)<<endl;
using ll = long long;
class Solution {
public:
int findKthNumber(ll n, ll k) {
auto findp = [&]( ll p){
ll ne = p+1;
ll ret=0;
while( p<=n){
ret += min(n+1,ne) - p;
p*=10;
ne*=10;
}
return ret;
};
ll cur = 1;
ll cnt = 1;
while(true){
if(cnt == k){
break;
}
ll t = findp(cur);
if(cnt + t > k ){
int ch = findp(cur*10);
cnt += 1;
cur*=10;
}
else{
cur++;
cnt += t;
}
}
return cur;
}
};