Я пытаюсь найти число решений для
x^a (mod b) =c with 0<=x<=u
где b‹=50, но a и u могут быть большими. Мой подход состоит в том, чтобы перебирать каждое значение x от 0 до min(b,u), и если оно удовлетворяет уравнению, добавить ceil((u-x)/b) (для учета количества значений x больше, чем b но эквивалентны в мультипликативной области b) количеству решений. Я не уверен в правильности своего алгоритма. И могу ли я расширить свой подход к более чем одной переменной, например, если есть
(x^a + y^a) (mod b)=c
Я могу создать все неупорядоченные пары x и y такие, что x‹=y до (x,y)‹=min(b,u) и снова вычислить i=ceil((u-x)/b) и j=ceil((u-y )/b) и умножьте сумму как:
t={i+i*(i-1)*2 if x=y , i*j*2 if x!=y }
и произвести суммирование т. Я хочу знать, верен ли мой алгоритм и есть ли другой более эффективный алгоритм.