P1516 青蛙的约会
由于这题我被坑了一下,所以写个题解。
大概是这样的:
两个数a 、b,a每次可以+m , b每次可以加n, 他们的模数是 l , 请问最小加多少次(x)可以使得(a + mx) Ξ (b + nx) mod l
也就是 a + mx = b + nx + kl (k为常数)
式子可以变成: kl + (n - m)x = a - b , exgcd一波
有两个我觉得坑点:
1. 判断负数情况,(n - m) 可能是负数 , 负数和正数的gcd有可能是正数也有可能是负数 , 所以判断一下如果(n - m) 是负数,就把式子变成(m - nx + kl = b - a。
2. 最小整数解,因为之前做题只习惯判断if(x < 0)的情况,忘记了x > 0 但不是最小整数解的情况,所以 x = ((x % mod) + mod)%mod 就是最小整数解