やるだけ
class FactoVisors {
public:
int getNum(vector <int> D, vector <int> M)
{
set<lli> ns[M.size()];
for (int i = 0; i < (int)M.size(); ++i) {
for (lli j = 1; j * j <= M[i]; ++j) {
if (M[i] % j == 0) {
ns[i].insert(j);
ns[i].insert(M[i] / j);
}
}
}
set<lli> cand;
FOR (i, ns[0]) {
bool flg = true;
for (int j = 0; j < (int)M.size(); ++j) {
flg = flg && ns[j].count(*i);
}
if (flg) cand.insert(*i);
}
int ret = 0;
FOR (i, cand) {
bool flg = true;
for (int j = 0; j < (int)D.size(); ++j) {
flg = flg && *i % D[j] == 0;
}
ret += flg;
}
return ret;
}
};