RT.
代码:
#include<bits/stdc++.h>
using namespace std;
char s[45];
int n;
int dp[45][100005];
int main(){
scanf(" %s%d",&s,&n);
int len=strlen(s);
memset(dp,0x3f,sizeof(dp));
int x=0;
for(int k(0);k<len;k++){
x=x*10+(s[k]-'0');
if(x>n)break;
dp[k][x]=0;
}
for(int i(1);i<len;i++){
for(int j(s[i]-'0');j<=n;j++){
dp[i][j]=min(dp[i][j],dp[i-1][j-(s[i]-'0')]+1);
}
int x=s[i]-'0',qwq=10;
for(int k(i-1);k>=max(0,i-5);k--){
x+=(s[k]-'0')*qwq;
qwq*=10;
if(x>n)break;
for(int j(x);j<=n;j++){
dp[i][j]=min(dp[i][j],dp[k-1][j-x]+1);
}
}
}
if(dp[len-1][n]<=40)printf("%d",dp[len-1][n]);
else puts("-1");
return 0;
}
thx qwq