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 就是最小整数解

posted @ 2020-10-01 15:59  GoodVv  阅读(100)  评论(0编辑  收藏  举报