二维平面
首先分析
(0,0)点与点
(x,y)之间的个数,其他形式的2点可以转化为这种形式
然后对于这2点连接成的直线的斜率
k,y=k∗x。
k=y/x=(y1/x1)(最简形式)。
然后我们可以找到距离
(0,0)点最近的好点(整数点)。
其实就是
(x1,y1),这中间不会有其他整数点。
因为要让
y′为整数,
x′为最小的整数,
x′无疑就是分母
(x1),
y′就是分子
y1。
然后下一个点就是
(2∗x1,2∗y1)...
直到
x′或
y′等于
x或
y。
x=p∗x1,y=p∗y1
所以中间的好点就是
p−1个。
当2点重合的时候特判一下就好了。
其余情况就是
gcd(x2−x1,y2−y1)−1,复杂度O(logn)
添加链接描述