二维平面

二维平面

首先分析 ( 0 , 0 ) (0,0) 点与点 ( x , y ) (x,y) 之间的个数,其他形式的2点可以转化为这种形式
然后对于这2点连接成的直线的斜率 k y = k x k,y = k * x
k = y / x = ( y 1 / x 1 ) k = y / x = (y_1 / x_1) (最简形式)。
然后我们可以找到距离 ( 0 , 0 ) (0,0) 点最近的好点(整数点)。
其实就是 ( x 1 , y 1 ) (x_1,y_1) ,这中间不会有其他整数点。
因为要让 y y' 为整数, x x' 为最小的整数, x x' 无疑就是分母 ( x 1 ) (x_1) , y y' 就是分子 y 1 y_1
然后下一个点就是 ( 2 x 1 , 2 y 1 ) . . . (2*x_1,2*y_1)...
直到 x x' y y' 等于 x x y y
x = p x 1 , y = p y 1 x = p * x_1 ,y = p * y_1
所以中间的好点就是 p 1 p - 1 个。
当2点重合的时候特判一下就好了。
其余情况就是 g c d ( x 2 x 1 , y 2 y 1 ) 1 , O ( l o g n ) gcd(x_2-x_1,y_2-y_1)-1,复杂度O(log_n)

添加链接描述

发布了27 篇原创文章 · 获赞 7 · 访问量 2689

猜你喜欢

转载自blog.csdn.net/weixin_43571920/article/details/104076391