diff --git a/Codeforces/1681/D/D.cpp b/Codeforces/1681/D/D.cpp new file mode 100644 index 00000000..74aa5cee --- /dev/null +++ b/Codeforces/1681/D/D.cpp @@ -0,0 +1,53 @@ +#pragma GCC optimize("Ofast") + +#include +#include +#include +#include +#include + +using std::cin; +using std::cout; +const char endl = '\n'; + +long long n, x; +std::map map; + +inline int len(long long x) { + if (x == 0) return 0; + + return (int)log10(x) + 1; +} + +int dfs(long long x) { + if (map.count(x)) return map[x]; + + map[x] = 0x3f3f3f3f; + + std::vector a; + long long t = x; + while (t) { + a.push_back(t % 10); + t /= 10; + } + + if (a.size() == n) return map[x] = 0; + + for (int i : a) { + map[x] = std::min(map[x], dfs(x * i) + 1); + } + + return map[x]; +} + +signed main() { + std::ios::sync_with_stdio(false); + + cin >> n >> x; + + int ans = dfs(x); + + cout << (ans == 0x3f3f3f3f ? -1 : ans) << endl; + + return 0; +}