一道只有中国人才出的出来的八股文题目……
题目不长,但一看到“跳了几次才能会面,如果不能,就输出‘Impossible’”,就知道这就是一个数论的题目。本来想着暴力求解,结果TLE。。。
于是就去了解怎么解同余方程组,也就知道了什么是扩展欧几里得算法,那么就很好写了(不清楚的uu可以看这个——线性同余方程 - OI Wiki (oi-wiki.org))。
看看代码~(真的希望不要再看到这种恶心题了)
def ex_gcd(a, b):
if b == 0:
return a, 1, 0
d, x, y = ex_gcd(b, a % b)
x, y = y, x - (a//b)*y
return d, x, y
x, y, m, n, L = map(int, input().split())
a, b, c = n-m, L, x-y
if a < 0:
a = -a
c = -c
d, x, y = ex_gcd(a, b)
if c % d != 0:
print('Impossible')
exit()
x *= c//d
r = b//d
print((x % r + r) % r)