@geek-sjl
2018-10-18T04:18:07.000000Z
字数 1111
阅读 499
给定平面上两个格点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;}