#include<bits/stdc++.h>
using namespace std;
string s;
int n,i,j;
long long k,f[50][50],p[50][500005];
int main(){
getline(cin,s);
scanf("%d",&n);
for(i=0;i<s.size();i++)
for(j=i;j<=min(i+11,int(s.size()-1));j++)
f[i+1][j+1]=f[i+1][j]*10+s[j]-48;
for(i=0;i<=s.size()+1;i++)
for(j=0;j<=n+1;j++)p[i][j]=INT_MAX/3;
p[0][0]=0;
for(i=1;i<=s.size();i++)
for(j=max(1,i-11);j<=i;j++)
for(k=f[j][i];k<=n;k++)
if(p[j-1][k-f[j][i]]!=INT_MAX/3)p[i][k]=min(p[i][k],p[j-1][k-f[j][i]]+1);
if(p[s.size()][n]!=INT_MAX/3)printf("%d",p[s.size()][n]-1);
else printf("-1");
}
对了1和8,这个程序哪儿错了?