我正在尝试找到解决方案的数量
x^a (mod b) =c with 0<=x<=u
其中 b<=50 但 a 和 u 可以很大。我的方法是从 0 到 min(b,u) 遍历 x 的每个值,如果它满足等式添加 ceil((ux)/b) (以说明 x 的值的数量大于 b但在 b) 的乘法域中等价于解的数量。我不确定我的算法的正确性。我可以将我的方法扩展到多个变量,例如是否存在
(x^a + y^a) (mod b)=c
我可以生成所有无序的 x 和 y 对,使得 x<=y 直到 (x,y)<=min(b,u) 并再次计算 i=ceil((ux)/b) 和 j=ceil((uy )/b) 并将总和相乘为:
t={i+i*(i-1)*2 if x=y , i*j*2 if x!=y }
并对 t 求和。我想知道我的算法是否正确以及是否有其他更有效的算法。