显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll n,k,f[50],ten[50];
ll num[30];
ll work(int x){
ll len=0;
while(x){
num[++len]=x%10;
x=x/10;
}
ll cnt=0;
for(int i=len;i>=1;i--){
cnt+=f[i-1]*num[i];
cnt+=ten[i-1];
ll lownum=0;
for(int j=i-1;j>=1;j--){
lownum=lownum*10+num[j];
}
if(num[i]==0){
cnt+=lownum+1;
}
cnt-=ten[i-1];
}
return cnt;
}
int main(){
ten[0]=1;
for(int i=1;i<=60;i++){
f[i]=f[i-1]*10+ten[i-1];
ten[i]=ten[i-1]*10;
}
while(scanf("%lld%lld",&n,&k)!=EOF){
ll l=0,r=n;
ll hs=work(n);
while(l<=r){
ll mid=l+r>>1;
if(hs-work(mid)>=k){
l=mid+1;
}
else{
r=mid-1;
}
}
printf("%lld\n",l);
}
return 0;
}