代码:
#include<bits/stdc++.h>
using namespace std;
int minn = 0x3f3f3f3f;
typedef long long ll;
int n;
long long x;
void dfs(ll v , int times)
{
if(times >= minn)
return;
int a[10] = {
0};
ll v1 = v,k = 0;
while(v)
{
a[v % 10] = 1;
k++;
v/=10;
}
// cout << v1 <<" "<< times << " " << k << endl;
// 剪枝
if(k == n)
{
minn = min(times , minn);
return;
}
if(n - k + times >= minn)
{
return;
}
// 深搜
for(int i = 9; i > 1; i--)
{
ll m = i * v1;
if(a[i]) dfs(m , times + 1);
}
}
int main()
{
cin >> n >> x;
dfs(x , 0);
if(minn == 0x3f3f3f3f) cout << -1 << endl;
else cout << minn;
return 0;
}