题意:曹冲建了n次猪圈,每次建了ai个猪圈,有bi只猪没有去处。求至少养了多少猪。
中国剩余定理模板题。我决定浅薄的讲一下。
中国剩余定理是解一堆同余方程组。即
x%a[1]=b[1]
x%a[2]=b[2]
…
x%a[n]=b[n]
条件是a数组中所有数互质。
那么我们规定M=a[1]* a[2]*… *a[n],再规定m[i]=M/a[i]。那么m[i]就表示a数组中除了下标为i元素的所有其它元素的乘积。由于a数组中任意两数互质,所以m[i]与a[i]互质。
我们可以利用exgcd解这么一个方程:p * m[i]+q * a[i]=1
因为q* a[i] 取模 a[i] 一定是0,那么p * m[i]取模a[i]一定是1。但是我们要求余数为 b[i],那么只要把 p*m[i] 再乘b[i]即可得到可行解。
【代码】