mayton2019, Alexandroppolus, -1, очевидно, означает, что ответа на задачу нет. Например, даже один повтор A-B два раза пересечет искомую точку, а введено K=1.
Но без полного условия задачи с форматом ввода не все понятно.
А может и нет ни какой ошибки? С чего вы взяли, что она есть вообще? Если программа у вас не компилируется, то вы приведите, что конкретно выдает компилятор. На какой строчке, какая ошибка возникает - целиком. Или программа выводит не то, что в методичке написано? Ну так приведите, что вы вводите, что она выводит, что хотели получить. Перпод говорит, "код - с ошибкой"? Ну так спросите препода.
haqz, Во-первых, нажимайте "ответить" и не удаляйте @wataru, в начале текста. Иначе мне не приходят уведомления о ваших ответах.
x(0)= x(n)-n. n = 1.....2^80
Далее, что такое x(n)? Это функция? Это ряд чисел? Это какая-то математическая операция над числами x и n?
Я, кажется, понимаю, в чем дело. Вы придумали "гениальную" идею, как взломать какой-то алгоритм шифрования, но не можете ее довести до конца. И что бы никто не украл вашу "гениальную" идую вы тут играете с нами в шарады, пытаясь выдать как можно меньше информации о вашей проблеме.
Так вот, я в эту игру играть не буду. Или формулируйте всю задачу с самого начала, или идите лесом.
Что за алгоритм шифрования? Как там приватный и публичный ключи связаны?
Взломом существующих алгоритмов шифрования занимались сотни тысяч ярчайших умов человечества, и пока только лишь математически строго доказали, что если и есть метод такого нахождения приватного ключа по публичному, то этим же методом можно решить тысячи других невероятно сложных задач, над которыми бились уже миллионы невероятно умных людей.
Думать, что это решил посетитель qna.habr.com, который даже формализовать свой вопрос не может - весьма наивно.
Приведите свою идею целиком и я объясню вам, где вы ошиблись.
haqz, еще раз, опишите, что известно! Что такое x(0)? Это число? Как оно взаимосвязано с ответом? Потом, вы пишите, что находите x(0), но x(0) известно.
Пока вы не формализуете вашу задачу, вам никто не поможет.
Пока задача звучит так: дано число x, что из него вычесть, что бы получить 0. Ответ - x и есть.
При чем тут приватный ключ? Опишите, что дано (числа p,fc,fg,f?) Как они взаимосвязаны, какие операции над ними можно делать и какой результат надо получить.
Вообще, обычно алгоритм шифрования подбирается так, что быстро приватный ключ из публичного никак не получить. Если это не учебный пример, то ваша задача не имеет решения.
Сложность - да, линейная + сортировка, если считать, что 10 и 4 - константы. Если их в оценку сложности брать, то там экспоненциальная по ним сложность будет.
Wataru
@wataru Автор вопроса, куратор тега Математика
Очень интересная идея, но, к сожалению, не работающая. Вот если бы в конце еще был %M добавлен- то да. Но нет. Модуль берется от каждого слагаемого. Иначе я скобки расставил в вопросе.
Контрпример: N=2, K=3, M=7:
0%7+3%7+6%7 = 0+3+6 = 9
Ваша формула может дать только меньше остатка, т.е. до 6. А ответ 9.
Да, действительно, так можно найти остаток от ответа по модулю M. Но это мало что дает.
gleendo, Может там что-то написано по c++17? HighTechLowLife указывает, что в этом стандарте, оказывается, это уже не UB (но все-равно, так писать - полохо).
Но вообще, книги могут содержать ошибки или неточности.
Karkes, Ошибка работы с памятью. res2001 Вам правильно сказал. Если вот тот код в вопросе, это не выжимка, и вы реально не инициализируете указатель, перед обращением к нему, то оно ожидаемо с ошибкой работы с памятью и упадет. inline тут не причем.
Karkes, а как именно не работет? Не компилируется? Тогда приведите ошибку компилятора. Не работает программа? Падает или что-то не то выводит?
inline с указателями не конфликтует, оно лишь указание компиятору по возможности сгенерировать код функции прямо в месте вызова, без лишних расходов на передачу аргументов и вызова функции.
Но без полного условия задачи с форматом ввода не все понятно.