我有个功能
y = ((N * x) / (M * N)) + ((N * x) % (M * N))其中M和N是常数(用于矩阵置换)。然而,我需要用x来解决它。我读过关于扩展欧几里德算法或欧拉逆模定理的多个主题,但是即使我最终找到了实现它的方法,一切都表明它的复杂性将比这个高得多。请问有什么建议吗?
发布于 2015-11-02 02:25:56
该函数简化为
y = (x / M) + N * (x % M).对于y这样的0 ≤ y < M * N,有一个唯一的解决方案
x = (y / N) + M * (y % N),因为这毕竟是个转位。证据是通过计算得到的。
((x / M) + N * (x % M)) / N + M * (((x / M) + N * (x % M)) % N)
= ((x / M) + N * (x % M)) / N + M * ((((x / M) % N + (N * (x % M)) % N) % N)
= ((x / M) + N * (x % M)) / N + M * (((x / M) % N) % N)
since (N * ...) % N = 0
= ((x / M) + N * (x % M)) / N + M * (x / M)
since 0 ≤ x / M < N
= x % M + M * (x / M)
since 0 ≤ x / M < N and N divides N * (x % M)
= x
by the Euclidean property of / and %.https://stackoverflow.com/questions/33469645
复制相似问题