以字典型排序时的这个方法是什么功能,能否写出一个新的方法,其功能与这个方法相同?

#include
#include
#include
using namespace std;
#define ll long long
//返回以数字k开头,<=n的数的个数
ll findKthNumber(ll n, ll k)
{
ll curr = 1;
k = k - 1;
while (k > 0)
{
ll steps = 0, first = curr, last = curr + 1;
while (first <= n)
{
steps += min(n + 1, last) - first;
first *= 10;
last *= 10;
}
if (steps <= k)
{
curr += 1;
k -= steps;
}
else
{
curr *= 10;
k -= 1;
}
}
return curr;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^