Я в настоящее время работаю над этой проблемой 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
Почему мой алгоритм перераспределения GCD не проходит в скрытых тестовых случаях? (Проблема Каттиса Икс) ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Resources.Load в некоторых случаях завершается сбоем, но в других случаях работает корректно.
Anonymous » » в форуме C# - 0 Ответы
- 26 Просмотры
-
Последнее сообщение Anonymous
-