//算法思想:將字典序視做一個樹,尋找m次則循環m次來找尋結果
//若是在這個區間內則M在這個區間內查找,不然讓梯度乘以10向上查找,直到找尋一個區間內,讓i每次加1一個一個查找
//第一步while循環是判斷是否查到這個位置,第二次則是寫出num在這個區間內有多少個數
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
long n,m;
cin>>n>>m;
long i=1;
m--;//若是要查找第一個數字那麼就是1
while(m!=0)
{
long low=i,high=i+1;
long num=0;
while(low<=n)//這裏是能夠取等號的
{
num+=min(n+1,high)-low;
low*=10;
high*=10;
}
if(num>m)//若是m>num即數字不在這個區間內,i每次*10向上尋找
{
i*=10;
m--;//例如:10和100是i*10後的不一樣結果,可是二者實際上是相鄰的,也就是隻須要作m--就能夠了
}
else//若是在這裏區間內則每次i自增1來尋找
{
m-=num;
i++;
}
}
cout<<i<<endl;
return 0;
}