SGU 140 题解

传送门

题意:给定长度 \(n\) 数组 \(\{a\}\) 和整数 \(b,m\),求数组 \(x\) 满足 \(\sum a_i\times x_i\equiv b\pmod m\)

可以写成 \(a_1x_1+a_2x_2+\dots+mp=b\)。判断无解:\(gcd(a_1,a_2,\dots,m)|b\)

先用拓展欧几里得求出 \(a_1x_1+a_2x_2=gcd(a_1,a_2)\) 的一组 \((x_1,x_2)\) 解。因为 \(a_1x_1+a_2x_2\) 一定可以用 \(k\cdot gcd(a_1,a_2)\) 表示,所以原问题可以转化为 \(k\cdot gcd(a_1,a_2)+a_3x_3+\cdots+mp=b\)

再对 \(gcd(a_1,a_2)\)\(a_3\) 重复一次上面的过程。求得 \(k,x_3\)然后让 \(x_1,x_2\) 乘以 \(k\)。因为一组 \((x_1,x_2)\) 能凑出一个 \(gcd(a_1,a_2)\),现在 \(gcd(a_1,a_2)\) 的系数是 \(k\),则 \((x_1,x_2)\) 也要乘以 \(k\)

循环往复,直到把 \(gcd(a_1\sim a_n),m\) 进行相同的操作,输出答案。

posted @ 2024-03-05 19:28  FLY_lai  阅读(16)  评论(0编辑  收藏  举报