我在无限长的数字线上,目前在零位。我只能将R units
向右移动,L units
向左移动。达到point H.
我可以知道用于解决这个问题的算法吗?
答案 0 :(得分:2)
您可以使用扩展欧几里德算法来有效地解决此问题。它实际上找到了一个解决方案
A * x + B * y = gcd(A, B)
等式,但您的问题可以很容易地减少到这个。假设O(log(max(A, B))
和A
符合标准整数类型(即不需要bignums),它的时间复杂度为B
。您可以阅读更多相关信息,例如:http://en.wikipedia.org/wiki/Extended_Euclidean_algorithm。