ABC235赛场调了1个小时还没调出来,硬是过不掉第四个样例,求助:
#include <bits/stdc++.h>
using namespace std;
#define int long long
int cur=0x3f3f3f3f;
int a,n;
string str;
string tmp;
int tmp2;
void dfs(int step,int ans,bool flag)
{
if(step>cur)return;
if(ans>=10000000)return;
if(ans==n)
{
cur=min(cur,step);
return;
}
if(!flag)
{
dfs(step+1,ans*a,1);
return;
}
dfs(step+1,ans*a,1);
if(ans%10==0)return;
str=to_string(ans);
tmp="";
tmp+=str[str.size()-1];
for(int i=0;i<str.size()-1;i++)tmp+=str[i];
tmp2=atoi(tmp.c_str());
dfs(step+1,tmp2,0);
}
signed main()
{
scanf("%d%d",&a,&n);
dfs(0,1,1);
dfs(0,1,0);
if(cur==0x3f3f3f3f)
{
printf("-1\n");
return 0;
}
printf("%d",cur);
return 0;
}
结尾:我的rating没了