Какие бы вы константы a/b/c/d не взяли результат будет меньше k ровно для k/N входных данных.
Потому что это умножение на константу по модулю N и оно обратимо.
Поэтому что ни делай, какие константы не подбирай, результат будет меньше 10^70 d 10^70/10^78 = 10^-8 случаев. Никакой 1/7 и даже 1/1000 тут и не пахнет.
Kryptonit, еще раз, geometry - это указатель. Это 8 байт, хранящие адрес чего-то. Операция присваивания у вас не копирует никакие данные, а запоминает адрес локального массива. По выходу из функции локальный массив - все. Что такое область видимости вы знаете? И у вас остается в geometry адрес пустоты, памяти, где когда-то были нужные данные. В месте, где вы их выводите, так получается, что это место переиспользуется для других данных, которые для вас мусор, хоть и постоянный.
yatanai, А как он должен определить, какой тип вы хотите использовать? Он вообще-то не может посмотреть через знак "=" и понять, что вы присваиваете int, значит вам нужен int. Можно же в int присваивать и char и short.
Wataru
@wataru Автор вопроса, куратор тега Математика
Anton F, Период и так известен. Это M (если сократить k и m на gcd, как указано в вопросе). Именно эта идея с отбрасыванием полных периодов уже расписана в вопросе (абзац "Дальше, можно считать, что N < M...") И сложность остается O(N % M), что ничем не лучше, если N < M.
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?) Как они взаимосвязаны, какие операции над ними можно делать и какой результат надо получить.
Вообще, обычно алгоритм шифрования подбирается так, что быстро приватный ключ из публичного никак не получить. Если это не учебный пример, то ваша задача не имеет решения.