@geek-sjl
2018-10-18T04:18:07.000000Z
字数 1111
阅读 405
给定平面上两个格点P1和P2,求线段P1P2上除了P1和P2之外还有多少个格点。注:格点就是平面中横竖坐标值都为整数的点。直白说,就是给定两个格点,把它们连线,求连线上的其他格点的个数。
代码实现如下:
#include <cstdio>
#include <cmath>
int binary_gcd(int a,int b){
if(a==b) return a;
if(a==0) return b;
if(b==0) return a;
if((~a&1)&&(~b&1)) return (binary_gcd(a>>1,b>>1))<<1;
if((~a&1)&&(b&1)) return binary_gcd(a>>1,b);
if((~b&1)&&(a&1)) return binary_gcd(a,b>>1);
if(a>b) return binary_gcd((a-b)>>1,b);
else return binary_gcd((b-a)>>1,a);
}
int main(){
int x1,y1,x2,y2;
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
printf("%d",binary_gcd(abs(x1-x2),abs(y1-y2))-1);
return 0;
}