Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Слава Україні, Героям слава
- #include <bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- int main() {
- ios_base::sync_with_stdio(false);
- cin.tie(nullptr);
- unordered_map<long long, long long> mp;
- 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) {
- if(!mp[c]) {
- mp[c] = val;
- } else {
- mp[c] = min(mp[c], val);
- }
- assert(b < v.size());
- if(a < m[v[b]]) {
- calc(a + 1, b, c * v[b], val, v, m);
- }
- for(int i = b + 1; i < (int)v.size(); i++) {
- calc(0, i, c, val, v, m);
- }
- };
- for(int i = 1; i < (1 << 12); i++) {
- long long cur = 0;
- for(int j = 0; j < 12; j++) {
- cur *= 10;
- cur += ((i >> j) & 1);
- }
- vector<ll> v;
- ll x = cur;
- for(ll j = 2; j * j <= x; j++) {
- while(x % j == 0) {
- x /= j;
- v.push_back(j);
- }
- }
- if(x) v.push_back(x);
- map<ll, ll> tmp;
- for(auto e : v) {
- tmp[e]++;
- }
- v.erase(unique(v.begin(), v.end()), v.end());
- calc(0, 0, 1, cur, v, tmp);
- }
- long long n;
- while(cin >> n) {
- cout << (mp.find(n) == mp.end() ? -1 : mp[n]) << "\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement