AtCoder ABC161 D Lunlun Number_出队


AtCoder ABC161 D Lunlun Number_预处理_02

题意:

现给定 AtCoder ABC161 D Lunlun Number_数据_03 ,求出所有 AtCoder ABC161 D Lunlun Number_数据_04 中第 AtCoder ABC161 D Lunlun Number_数据_03

预处理打表。
预处理可以使用类似于 AtCoder ABC161 D Lunlun Number_数据_06 的方法实现。如果当前出队的数大于某个较大值时停止。实测“较大值”取 AtCoder ABC161 D Lunlun Number_预处理_07 时,共可以得到 AtCoder ABC161 D Lunlun Number_数据_08 个数以上,根据 AtCoder ABC161 D Lunlun Number_数据_03

AC代码:

vector<ll> ans;
ll Q[10000005];
int l = 1, r = 0;
void init()
{
rep(i, 1, 9)
Q[++r] = i;
while (r > l)
{
ll cur = Q[l++];
if (cur > 1e11)
return;
ans.pb(cur);
int back = cur % 10;
Q[++r] = cur * 10ll + back;
if (back != 0)
Q[++r] = cur * 10ll + back - 1;
if (back != 9)
Q[++r] = cur * 10ll + back + 1;
}
}

int main()
{
init();
int k;
sd(k);
sort(ans.begin(), ans.end());
pld(ans[k - 1]);
return 0;
}