Advertisement
cosenza987

Untitled

Jul 26th, 2023
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.43 KB | None | 0 0
  1. //Слава Україні, Героям слава
  2.  
  3. #include <bits/stdc++.h>
  4.  
  5. using namespace std;
  6.  
  7. typedef long long ll;
  8.  
  9. int main() {
  10. ios_base::sync_with_stdio(false);
  11. cin.tie(nullptr);
  12. unordered_map<long long, long long> mp;
  13. function<void(ll, ll, ll, ll, vector<ll>&, map<ll, ll>&)> calc = [&](ll a, ll b, ll c, ll val, vector<ll> &v, map<ll, ll> &m) {
  14. if(!mp[c]) {
  15. mp[c] = val;
  16. } else {
  17. mp[c] = min(mp[c], val);
  18. }
  19. assert(b < v.size());
  20. if(a < m[v[b]]) {
  21. calc(a + 1, b, c * v[b], val, v, m);
  22. }
  23. for(int i = b + 1; i < (int)v.size(); i++) {
  24. calc(0, i, c, val, v, m);
  25. }
  26. };
  27. for(int i = 1; i < (1 << 12); i++) {
  28. long long cur = 0;
  29. for(int j = 0; j < 12; j++) {
  30. cur *= 10;
  31. cur += ((i >> j) & 1);
  32. }
  33. vector<ll> v;
  34. ll x = cur;
  35. for(ll j = 2; j * j <= x; j++) {
  36. while(x % j == 0) {
  37. x /= j;
  38. v.push_back(j);
  39. }
  40. }
  41. if(x) v.push_back(x);
  42. map<ll, ll> tmp;
  43. for(auto e : v) {
  44. tmp[e]++;
  45. }
  46. v.erase(unique(v.begin(), v.end()), v.end());
  47. calc(0, 0, 1, cur, v, tmp);
  48. }
  49. long long n;
  50. while(cin >> n) {
  51. cout << (mp.find(n) == mp.end() ? -1 : mp[n]) << "\n";
  52. }
  53. return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement