Я тоже считаю, что тут первый случай чуть-чуть предпочтительнее. Ибо из названия видно, что это указатель и его появление в логических усовиях - очевидно проверка на не nullptr.
inek, Поиск Гамильтонового цикла, действительно - NP полная задача и человечеству не известен полиномиальный алгоритм ее решения. Похоже, вы что-то путаете. Может упоминаемый вами алгоритм имеет экспоненциальную сложность и все сходится. Или, скорее всего вы спутали с задачей поиска Эйлерова цикла. Для него действительно есть полиномиальный алгоритм. Вот только он для решения немного другой задачи: поиск ЛЮБОГО ОДНОГО эйлерового цикла. Не всех - их тоже может быть экспоненциально много. Точно так же задача поиска одного любого цикла легко решается обыкновенным DFS за линейную сложность.
Что касается практического применения. Такового у просто задачи найти все циклы - я не вижу. Только как часть полного перебора для какой-то другой задачи, например той же задачи коммивояжера.
Zhenia Bel, Самое простое - заметить, что строки идут парами. Поэтому внешний цикл сделайте по парам.
Внутри надо вывести i+1 цифр i+1 в одной строчке и i+1 цифр i+3 во второй. Это делается вложенным циклом.
Что бы вывести одну цифру делайте printf("%d", i+1); внутри цикла.
Что касается ассемблерра, то там в eax загружается адрес локальной переменной (на стеке) и этот указатель пихается в стек - таким образом передается параметром в функцию.
Поскольку он optional, можете смело передавать nullptr, если вам не нужно контролировать ошибки.
vaselekk, Вы пропустили шаг приведения к плоскости.
Когда вы получили 2 ортонормированных вектора на плоскости e1 и e2, то считая скалярные произведения (P-p1) с e1 и e2 вы можете получить координаты точки P на плоскости. Вот уже там векторное произведение - это число.
Можно и без приведения к плоскости, тогда вам надо проверить, что все векторные произведения смотрят в одну и ту же сторону. Они все будут перпендекулярны плоскости треугольника, но могут смотреть туда или обратно. Можно, например, скалярно умножать результаты векторного произведения на одно из них - вот там уже можно сравнивать знаки числа.
WbICHA, Ну, задача, где надо делать 10k прогонов - это уже совсем другая задача. А так эти 30 наносекунд сэкономленного времени незаметны на фоне случайного шума от системного планировщика, кэша, температуры процессора и всякой другой дичи.
WbICHA, Интересны не сами числа, а сколько их. Числа фиббоначи растут экспоненциально. Так что ваше огромное органичение может дать всего-то в три раз больше чисел.
Что программа должна делать-то? Какие ограничения? Сколько чисел, насколько они большие?
В общем случае - никак не уменьшить потребление памяти. Потому что если все числа разные, мап, как предлагает 15432 будет занимать даже больше памяти, чем массив.
Что за задача вообще? Дано a и n, надо взять корень n-ой степени из a? Какие ограничения? Что выводить, когда ответ не определен?
Почему бы не воспользоваться просто pow(a,1.0/n), зачем вы бинпоиск нагородили?
Похоже, ошибка в разборе крайних случаев. Зачем вы там делаете return a? Это вообще лишино смысла, возвращать в коде ошибки всей программы входное double число.
asd1237asd, Ну не получится у вас решить задание по C++ не зная C++. Никак. Учите язык - это, наверно, не последнее задание по вашему курсу. Смиритесь, что этот зачет вы не получите, учите и идите на пересдачу. Или бросайте курсы, чем вы там занимаетесь. Не получится иначе.