Я пытаюсь найти количество растворачисло решения нелинейного уравнения конгруэнции
x^a (mod b) =c with 0<=x<=u
где б < = 50, но и у может быть большим. Мой подход заключается в повторении каждого значения x от 0 до min (b, u), и если он удовлетворяет уравнению, добавьте ceil ((ux)/b) (для учета количества значений x is больше b но эквивалентны в мультипликативном поле b) на число решений. Я не уверен в правильности моего алгоритма. И я могу расширить свой подход к более чем одной переменной, как если есть
(x^a + y^a) (mod b)=c
я могу производить все неупорядоченные пары х и у такие, что х < = у до (х, у) < = мин (б , и) и снова вычислить I = CEIL ((УБ)/б) и J = CEIL ((иу)/б) и умножить добавить сумму как:
t={i+i*(i-1)*2 if x=y , i*j*2 if x!=y }
и принять суммирование т. Я хочу знать, правильно ли работает мой алгоритм, и есть ли другой более эффективный алгоритм.
Да, ваш первый алгоритм является правильным, так как следующий ответ на аналогичный вопрос предполагает: http://stackoverflow.com/a/18042254/509868 – anatolyg