Почему мой алгоритм перераспределения GCD не проходит в скрытых тестовых случаях? (Проблема Каттиса Икс)C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Почему мой алгоритм перераспределения GCD не проходит в скрытых тестовых случаях? (Проблема Каттиса Икс)

Сообщение Anonymous »

Я в настоящее время работаю над этой проблемой Kattis: https://open.kattis.com/problems/iks
Для решения проблемы и получить наибольший возможный GCD, перенесим основной фактор из одного числа в другое, я использую следующий подход:

Is factorize Каждое число. Количество случаев каждого основного фактора. < /li>
Я выполняю целочисленное деление по каждому количеству, чтобы определить, сколько этого основного фактора следует распределить по каждому числу. Каждое число по сравнению с распределением. < /li>
< /ul>
Вот код, который я написал. Он работает правильно на предоставленных входах выборки, но не удается в скрытых тестовых случаях, и я не могу выяснить, почему. < /P>
Любая помощь будет очень признателен!#include
#include
#include
#include

int main() {
using namespace std;

vector factorsList;
unordered_map frequencyMap;

int N, M;

std::cin >> N;
for(int i = 0; i < N; ++i)
{
cin >> M;
auto& factors{ factorsList.emplace_back() };

while (M % 2 == 0) {
factors.push_back(2);
frequencyMap[2]++;
M /= 2;
}

for (int i = 3; i * i 2) {
factors.push_back(M);
frequencyMap[M]++;
}
}

int result = 1, count = 0;

for (auto it{ begin(frequencyMap) }; it != end(frequencyMap); ++it)
{
it->second = it->second / N;
if (it->second == 0)
continue;

result *= it->first * it->second;

for(auto& factors : factorsList)
{
int c = 0;
for(auto& factor : factors)
{
if (factor == it->first)
c += 1;
}
if (c < it->second)
count += it->second - c;
}
}

cout

Подробнее здесь: https://stackoverflow.com/questions/796 ... kattis-iks
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»