#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int calSteps(ll n,ll n1,ll n2)
{
ll steps=0;
while(n1<=n)
{
if(n2<n+1) steps+=n2-n1;
else steps+=n+1-n1;
n1*= 10;
n2*= 10;
}
return steps;
}
int findk(ll n,ll k)
{
ll cur =1;
k=k-1;
while(k>0)
{
ll steps=calSteps(n,cur,cur+1);
if(steps<=k)
{
cur+=1;
k-=steps;
}
else {
cur*=10;
k=k-1;
}
}
return cur;
}
int main()
{
ll n,k;
cin>>n>>k;
int res = findk(n,k);
cout<<res;
return 0;
}
lanqiao OJ3336 第k个数
最新推荐文章于 2024-11-06 11:05:01 发布
这篇文章展示了如何在C++中编写一个名为`findk`的函数,用于在一个递增序列中找到给定步长的最小值,通过调用`calSteps`函数计算步长。主要涉及整数操作和循环结构。
摘要由CSDN通过智能技术生成