• + 1 comment

    Solution in C++:

    int getTotalX(vector<int> a, vector<int> b) {
        std::sort(a.begin(), a.end());
        std::sort(b.begin(), b.end());
        
        unordered_set<int> integers;
        int lower = a.back(), upper = b.front();
        if(upper%lower)
            return 0;
        int mul = static_cast<unsigned int>(upper/lower);
        for(int i = 1; i <= mul; ++i)
        {
            int j = i*lower;
            bool isQualified = true;
            auto aa = a.rbegin();
            while(aa != a.rend())
            {
                if(j % *aa)
                {
                    isQualified = false;
                    break;
                }
                aa++;
            }
            
            if(isQualified)
            {
                auto bb = b.begin();
                while(bb != b.end())
                {
                    if(*bb % j)
                    {
                        isQualified = false;
                        break;
                    }
                    bb++;
                }
            }
            
            if(isQualified)
                integers.emplace(j);
        }
        
        return integers.size();
    }