定理内容
对于任意不全为 0 的整数 a,b,方程 ax+by=gcd(a,b) 一定有整数解 x,y。
证明
引理 1
对于两个正整数 a,b 满足 a>b 可以推出 gcd(a,b)=gcd(b,amodb)。
设 a=kb+c,d∣gcd(a,b),那么一定有 d∣a,d∣b。
通过移项可以得到 c=kb−a,将两边同除 d 得到 dc=k⋅db−da,因为 d∣a,d∣b 所以等式右侧为整数,这就证明了 d∣c。
将 a=kb+c 变形可以得到 c=bmoda,可以推出 d∣bmoda,因为所有的因数都是相同的,所以自然有 gcd(a,b)=gcd(b,amodb)。
定理证明
对于任意一个 a,b 为 0 的情况有 gcd(a,b)=max(a,b),此时 x=1,y=1 就是一组解,定理显然满足。
设 d=gcd(a,b),那么将等式两侧同乘 d1 可以得到 da⋅x+bb⋅y=1,不妨设 a′=da,b′=db。
所以只需要证明 a′x+b′y=1 即可。
根据引理 1 可以得到辗转相除法 gcd(a,b)=gcd(b,amodb)=⋯。
我们记录出每一取模,具体的 a=qi⋅b+ri,其中 ri 就是 amodb 的值。
在辗转相除法进行到最后一步时一定有 rn=1,将取模操作反向的带回原式可以得到:rn−2=xnrn−1+1,1=rn−2−xnrn−1,⋯。
通过这样的不断代换就可以得到 a′x+b′y=1。
拓展
多个元素
裴蜀定理可以拓展到多个数的情况,也就是对于不全为 0 的整数 a1,a2,⋯,an 的方程 i=1∑nai⋅xi=i=1gcdnai 一定可以找到整数解 x1,x2,⋯,xn。
一般应是否有解
对于更一般的方程 i=1∑nai⋅xi=m,如果 m∣i=1gcdnai 那么方程有解,否则一定无解。
证明很简单,因为 i=1∑nai⋅xi=i=1gcdnai 有解,那么将所有的元素除以 m 就得到一组解了。
应用
假设长度为 ai 的连续的序列的第一项为 xi,那么因为易得 si=2ai⋅[xi+(xi+ai−1)] 。
因为题目要求 ∑i=1msi=0,所以可以得到 ∑i=1m2ai⋅[xi+(xi+ai−1)]=0。
即 ∑i=1m2ai⋅[2⋅xi+ai−1]=0。
也就是 (∑i=1m2ai⋅(ai−1))+(∑i=1mai⋅xi)=0。
通过移项可以得到 ∑i=1m2ai⋅(ai−1)=−∑i=1mai⋅xi,所以左边就是一个常数。
根据贝祖定理,当且仅当 gcd(a1,a2,⋯,am)∣∑i=1m2ai⋅(ai−1) 时有解,通过移项可以得到 2∣∑i=1mgcd(a1,a2,⋯,am)ai⋅(ai−1)。
假设 gcd(a1,a2,⋯,am)=2t⋅(2k+1) 其中 t 尽可能大且 k 为整数,那么设 ci=2tai。
将上式代入,得到 2∣∑i=1m2t⋅(2k+1)2t⋅ci⋅(2t⋅ci−1),由于这个式子是由 ∑i=1mgcd(a1,a2,⋯,am)ai⋅(ai−1) 变形来的,所以一定是一个整数。
因为一个偶数除以一个奇数并不影响奇偶性,所以 2k+1 直接不看,即得到 2∣∑i=1mci⋅(2t⋅ci−1)。
当 t=0 时,等式恒成立,否则需满足 2∣∑i=1mci。
因为 t=0 只会发生在选择的 m 个数中出现奇数,所以将奇数的情况单独讨论。
假设奇数有 a 个,偶数有 b 个,那么因为只要有奇数就可以,所以方案数为 (2a−1)⋅2b。
对于 t=0 的情况,假设有 a 个 ai 没有多余的 2,b 个有多余的 2,那么贡献为 2b⋅∑i=0⌊a/2⌋Ca2i。
因为 Cai=Ca−1i+Ca−1i−1,所以贡献为 2b⋅∑i=1a−1Ca−1i,也就是 a 个元素的非空子集数量 2b⋅(2a−1−1)。