Что касается ассемблерра, то там в 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++. Никак. Учите язык - это, наверно, не последнее задание по вашему курсу. Смиритесь, что этот зачет вы не получите, учите и идите на пересдачу. Или бросайте курсы, чем вы там занимаетесь. Не получится иначе.
Армянское Радио, Но они не помогут - потому что вы решаете частную задачу через гораздо более общую. Усложняете сильно решение. Никакие оптимизации вам не помогут.
На самом деле, эту задачу можно свести к рюкзаку. Но не надо вводить новые сущности. Надо плясать от заданного уже уравнения dedka + babka + repka == skazka, где переменные - буквы. Это как у автора в решении - домножать цифры на степени десятки, складывать.
Потом выразить одну переменную из уравнения. И осталось найти все неизвестные от 0 до 9 такие, что их заданная линейная комбинация (оставшаяся переменная) будет от 0 до 9. Тут рюкзак с возможно отрицательными весами и каждую вещь можно брать от 0 до 9 раз. И надо набрать сумму от 0 до 9. Но числа в задаче не большие, поэтому можно решать динамическим программированием - потребуется 90 раз пробежаться по массиву из 200000 флагов.
Однако переборное решение, если проверки делать сразу - будет все-равно во много раз быстрее.
Армянское Радио, не, ну так-то, конечно, можно переформулировать почти любую задачу в задачу о рюкзаке. Например, найти a,b,c т.ч. a^2+b^2=c^2 - тоже. И даже найти a+b. Можно, но зачем? Чтобы вместо одной инструкции CPU нагружать видеокарту?
Армянское Радио, В рюкзаке есть еще цель - она дана. В этой задаче нет никакого фиксированного числа, которое нужно получить в качестве суммы. Результат - тоже неизвестен.
Вот 1920x1080 в 2560x1440 уже сложнее. В 4/3 раза масштабирование. Приходится делать интерполяцию при масштабировании. Иначе - никак.