nod = nod / (pow((double)div, (double)power)); Мы делим НОД на степень простого множителя в НОК’е, цифру, на которую он, скорее всего, не делится.1ULL << counter, разумеется.nokm[it->first] - it->second — если, по-твоему, верна именно разность, а не единица.2ULL << counter.
Повторяю: не выдерживается асимптотическая сложность.
И этот код тоже не выдерживает: map является деревом поиска, а вы по ней делаете линейный поиск.