求助atcoder abc235d
  • 板块学术版
  • 楼主vandijk
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/1/17 18:18
  • 上次更新2023/10/28 12:07:35
查看原帖
求助atcoder abc235d
340345
vandijk楼主2022/1/17 18:18

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两个点,求助

2022/1/17 18:18
加载中...