https://atcoder.jp/contests/abc235/tasks/abc235_d
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,k;
int vis[1000005];
int op2(int x){
int y=x,len=0,z=0;
while(y){
z=y%10;
y/=10;
len++;
}
y=(x-z*pow(10,len-1))*10+z;
return y;
}
void dfs(int x){
// printf("%d\n",x);
if(x<1)return ;
if(x==1){
return ;
}
if(x%k==0){
if(vis[x/k]>vis[x]+1||vis[x/k]==0){
vis[x/k]=vis[x]+1;
dfs(x/k);
}
}
if(x%10==0||x<10)return ;
int y=op2(x);
if(vis[y]==0||vis[y]>vis[x]+1){
vis[y]=vis[x]+1;
dfs(y);
}
return ;
}
signed main(){
scanf("%d%d",&k,&n);
dfs(n);
if(vis[1]!=0)cout<<vis[1]<<endl;
else cout<<-1<<endl;
return 0;
}
WA两个点,求助