原题链接:https://codeforces.com/contest/1304/problem/A
题目描述
Gildong在公园中休息时,看到了两只兔子A和B,他们都在向着对方跳。
兔子A目前的位置是x
,兔子B目前的位置是y
(
x
<
y
)
(x<y)
(x<y)。每一秒两只兔子都会向前跳跃一段固定的距离:A每次跳跃的距离是a
,B每次跳跃的距离是b
这时,Gildong开始思考:是否会有一个时刻,两只兔子刚好跳到了同一个位置呢?
测试数据
输入:
第一行是测试用例总数t
(
1
≤
t
≤
1000
)
(1\le t \le 1000)
(1≤t≤1000)
接下来t
行,每行是一个测试用例。
一个测试用例有4个字段,分别是x, y, a, b
(
0
≤
x
<
y
≤
1
0
9
,
1
≤
a
,
b
≤
1
0
9
)
(0\le x<y\le 10^9, 1\le a,b \le 10^9)
(0≤x<y≤109,1≤a,b≤109)
输出
对于每个测试用例,输出两只兔子可以同时跳到同一位置的时间,如果两只兔子无法在同一时刻跳至同一位置,则输出-1
例:
# Input
5
0 10 2 3
0 10 3 3
900000000 1000000000 1 9999999
1 2 1 1
1 3 1 1
# Output
2
-1
10
-1
1
题目解析
假设两只兔子能够在时刻T
跳至同一位置,则T
应该满足如下条件:
a
×
T
+
b
×
T
=
y
−
x
a\times T + b\times T = y-x
a×T+b×T=y−x
调整后:
(
a
+
b
)
×
T
=
y
−
x
(a+b)\times T = y-x
(a+b)×T=y−x
因为T
是整数,所以,只要
(
a
+
b
)
(a+b)
(a+b) 能整除
(
y
−
x
)
(y-x)
(y−x) 就可以了
参考代码
因为算法比较简单,代码就不写了。