По свойствам таких групп достаточно взять любой элемент, кроме единицы и нуля, и его степени дадут вам все элементы.
Неправда.
Если для вашего многочлена x является генератором, то x^3 им точно не является. Потому что в мультипликативной группе должно быть 15 элементов. Если взять x^3 то оно сгенерирует x^6, x^9, x^12, x^15 = 1. Только 5 элементов.
Это так всегда, если мощность группы не простое число.
Mercury13, можно усложнить. пусть dosomething берет и выполняет a-ый в лексикографическом порядке алгоритм, передав ему b. Множество алгоритмов же счетное?
Вот тут уже точно любой метод проверки этого кода становится эквивалентен решению задачи останова.
Mercury13, ну так точно так же могут быть частичные решения для задачи останова. Это неконструктивное доказательство. Я не знаю, что за dosomething() в искомом алгоритме. Но я знаю, что оно существует. Потому что иначе бы задача останова решалась.
marlaaa, Есть. Во-первых, там где вы выводите перевод строки - там у вас отступ неправильно поставлен. Эта инструкция вне цикла. Во-вторых, чтобы поменять порядок вывода, вам надо переставить местами циклы, где вывод поисходит.
проходим по длине - 1, чтобы проверить максимально ли число
Пока ладно, но важно, что там внутри делается. Действительно ли в этом цикле вы находите максимальное число?
выводим i-тый и i-1 элементы
Ok.
сравниваем их
Да, сравниваем.
mx = numbers[i+1] # присваиваем к mx максимальное из i-тый и i-1 элементы
Нет. Вы не присваиваете максимум из двух чисел в mx. Вы присваиваете mx второе число, только если оно больше. Иначе ничего не происходит.
После вашего добавления else ваши комментарии действительно становятся верными, кроме одного к циклу. Почему из "присваиваем к mx максимальное из i-тый и i-1 элементы " следует, что цикл "чтобы проверить максимально ли число"?
Вы внутри не ищите максимум в массиве, а много раз присваиваете переменной максимальное из двух чисел. В переменной будет в итоге результат последней операции - а именно максимум из двух последних чисел. Если, как в примере в вопросе, максимум во всем массиве не в конце - вы его не найдете.
Подсказка: Результат работы прошлых итераций как-то должен учитыватся в следующих. Вы этот результат кладете в mx. Значит записанное в mx значение должно как-то влиять на вычисление mx дальше.
Adamos, Векторные умножения будут чуть-чуть медленнее в сравнении и сильно быстрее в преподготовке. Но главное их достоинство - если входные координаты целые, то все можно сделать в целых числах и не парить мозг насчет точности. Плюс не надо выделять память и хранить угол вместе с точками.
Удобнее сортировать относительно крайней точки (например - самой левой из самых нижних). Тогда все точки лежат в одной полуплоскости и тогда не надо городить тригонометрию, чтобы получать углы - точки можно сравнивать векторным произведением.
Ananasi0, очевидно, это задача на структуры данных и алгоритмы. У вас наивное медленное решение и его никак не ускорить. Дайте условие задачи хоть. Подозреваю, что тут может помочь дерево отрезков с отложенным изменением или алгоритм сканирующей прямой плюс какой-нибудь set.
Неправда.
Если для вашего многочлена x является генератором, то x^3 им точно не является. Потому что в мультипликативной группе должно быть 15 элементов. Если взять x^3 то оно сгенерирует x^6, x^9, x^12, x^15 = 1. Только 5 элементов.
Это так всегда, если мощность группы не простое число.