#P1267. 求两点之间的格点个数

求两点之间的格点个数

题目描述

给定直角坐标系中两个点 AA 和 BB 的坐标 (ax,ay)(a_x, a_y)、(bx,by)(b_x, b_y),其中 ax,ay,bx,bya_x, a_y, b_x, b_y 均为整数。求线段 ABAB 上 AA 和 BB 之间的格点个数(不包括 AA 和 BB 本身)。

本题需要处理多个测试数据。

输入格式

第一行一个整数 TT,表示测试数据组数(1≤T≤1001 \le T \le 100)。

接下来 TT 行,每行四个整数 ax  ay  bx  bya_x \; a_y \; b_x \; b_y(−109≤ax,ay,bx,by≤109-10^9 \le a_x, a_y, b_x, b_y \le 10^9)。

输出格式

对每组测试数据,输出一行,表示对应的格点个数。

样例

1
1 2 25 20
5

说明/提示

记 xx 坐标差的绝对值为 xxxx,yy 坐标差的绝对值为 yyyy。若 A=BA=B,答案为 00。否则计算 g=gcd⁡(xx,yy)g = \gcd(xx, yy)(若 xxxx 或 yyyy 为 00,则 gg 取非零的那个值),答案为 g−1g-1。