小X在做一个机器人的项目,他正思考这样一个问题:如果一个小机器人从(x1, y1)这个位置出发,沿直线移动到(x2, y2)这个位置,它一共经过了多少个交叉点?
注意起点和终点也算作经过,因此至少经过了2个交叉点。
输入
输入数据仅有一行包含4个用空格隔开的正整数,分别表示x1, y1, x2, y2
输出
输出一行包含一个小于20的正整数,表示从(x1, y1)沿直线移动到(x2, y2)经过的交叉点的个数。
int gcd(int x, int y) {
if (y == 0) return x;
return gcd(y, x%y);
}
int main(int argc, const char * argv[]) {
/*
x1=x2
y1=y2
一个 格 w=h=1
正方形 abs(x1-x2)
奇偶 2
奇奇 2
偶偶 3
*/
int x1,x2,y1,y2;
cin >> x1>>y1>>x2>>y2;
int w = abs(x1 - x2);
int h = abs(y1 - y2);
cout <<gcd(w, h)+1<<endl;
return 0;
}