题意:
给出八个基底向量:
(a,b),(−a,b),(a,−b),(−a,−b),(b,a),(−b,a),(b,−a),(−b,−a)
(a,b),(-a,b),(a,-b),(-a,-b),(b,a),(-b,a),(b,-a),(-b,-a)
(a,b),(−a,b),(a,−b),(−a,−b),(b,a),(−b,a),(b,−a),(−b,−a)
问能否通过若干个上述向量相加得到相邻(x,y)(x,y)(x,y)?
Solution:
显然我们只需加减以下四组基底相邻即可
(a,b),(−a,b),(b,a),(−b,a)
(a,b),(-a,b),(b,a),(-b,a)
(a,b),(−a,b),(b,a),(−b,a)
不妨设他们分别被算数增加了kik_{i}ki次,ki∈Zk_{i}\in Zki∈Z,于是需要下列方程组有解
k1(a,b)+k2(−a,b)+k3(b,a)+k4(−b,a)=(x,y)
k_{1}(a,b)+k_{2}(-a,b)+k_{3}(b,a)+k_{4}(-b,a)=(x,y)
k1(a,b)+k2(−a,b)+k3(b,a)+k4(−b,a)=(x,y)
即
{(k1−k2)a+(k3−k4)b=x(k1+k2)a+(k3+k4)b=y
\begin{cases}
(k_{1}-k_{2})a+(k_{3}-k_{4})b=x \\
(k_{1}+k_{2})a+(k_{3}+k_{4})b=y
\end{cases}
{(k1−k2)a+(k3−k4)b=x(k1+k2)a+(k3+k4)b=y
要方程组有解,这是两个不定方程,由裴蜀定理,首先需要
gcd(k1−k2,k3−k4)∣xgcd(k1+k2,k3+k4)∣y
gcd(k_{1}-k_{2},k_{3}-k_{4})|x\\
gcd(k_{1}+k_{2},k_{3}+k_{4})|y
gcd(k1−k2,k3−k4)∣xgcd(k1+k2,k3+k4)∣y
然后这样只保证了存在(k1−k2),(k1+k2),(k3−k4),(k3+k4)(k_{1}-k_{2}),(k_{1}+k_{2}),(k_{3}-k_{4}),(k_{3}+k_{4})(k1−k2),(k1+k2),(k3−k4),(k3+k4),我们的目的是使kik_{i}ki有正整数解,此时我们可以这样解出k1k_{1}k1
k1=(k1−k2)+(k1+k2)2
k_{1}=\frac{(k_{1}-k_{2})+(k_{1}+k_{2})}{2}
k1=2(k1−k2)+(k1+k2)
要使k1k_{1}k1是正整数,那么必须要分子为偶数,于是(k1+k2)(k_{1}+k_{2})(k1+k2)与(k1−k2)(k_{1}-k_{2})(k1−k2)奇偶性必须相同,同理对后两项也是的,接下来枚举他们的奇偶性:
-
若(k1−k2)(k_{1}-k_{2})(k1−k2)为偶数,(k3−k4)(k_{3}-k_{4})(k3−k4)为偶数,那么方程组的(1)(1)(1)式就可以写作
2[(k1−k2)a+(k3−k4)b]=x⇒(k1−k2)(2a)+(k3−k4)(2b)=x 2[(k_{1}-k_{2})a+(k_{3}-k_{4})b]=x\Rightarrow(k_{1}-k_{2})(2a)+(k_{3}-k_{4})(2b)=x 2[(k1−k2)a+(k3−k4)b]=x⇒(k1−k2)(2a)+(k3−k4)(2b)=x
此时只需要上述方程有解,就可以保证解出来的(k1−k2)(k_{1}-k_{2})(k1−k2)为偶数了,即只需要
gcd(2a,2b)∣x gcd(2a,2b)|x gcd(2a,2b)∣x
同理可得
gcd(2a,2b)∣y gcd(2a,2b)|y gcd(2a,2b)∣y -
若(k1−k2)(k_{1}-k_{2})(k1−k2)为偶数,(k3−k4)(k_{3}-k_{4})(k3−k4)为奇数,只需要左右两边+b+b+b,得到
(k1−k2)a+(k3−k4+1)b=x+b (k_{1}-k_{2})a+(k_{3}-k_{4}+1)b=x+b (k1−k2)a+(k3−k4+1)b=x+b
这就转化为都是偶数的情形了,同上只需要
gcd(2a,2b)∣(x+b),gcd(2a,2b)∣(y+a) gcd(2a,2b)|(x+b),gcd(2a,2b)|(y+a) gcd(2a,2b)∣(x+b),gcd(2a,2b)∣(y+a)下面两种情况同理,直接给出结论
-
若(k1−k2)(k_{1}-k_{2})(k1−k2)为奇数,(k3−k4)(k_{3}-k_{4})(k3−k4)为偶数,只需要
gcd(2a,2b)∣(x+a),gcd(2a,2b)∣(y+b) gcd(2a,2b)|(x+a),gcd(2a,2b)|(y+b) gcd(2a,2b)∣(x+a),gcd(2a,2b)∣(y+b) -
若(k1−k2)(k_{1}-k_{2})(k1−k2)为奇数,(k3−k4)(k_{3}-k_{4})(k3−k4)为奇数,只需要
gcd(2a,2b)∣(x+a+b),gcd(2a,2b)∣(y+a+b) gcd(2a,2b)|(x+a+b),gcd(2a,2b)|(y+a+b) gcd(2a,2b)∣(x+a+b),gcd(2a,2b)∣(y+a+b)
上述四种情况满足一个即代表有解,并且上面每一种都包含最开始的裴蜀定理的条件,就无需再验证裴蜀定理了
// #include<bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<numeric>
#include<ctime>
using namespace std;
using ll=long long;
const int N=25,inf=0x3fffffff;
const long long INF=0x3fffffffffffffff,mod=1e9+7;
template<class T>
T gcd(T a,T b){
return !b?a:gcd(b,a%b);
}
ll tmp;
bool check(ll x,ll y){return x%tmp==0&&y%tmp==0;}
int main()
{
#ifdef stdjudge
freopen("in.txt","r",stdin);
#endif
int t; cin>>t;
while(t--)
{
ll a,b,x,y; cin>>a>>b>>x>>y;
tmp=gcd(a,b)<<1;
if(check(x,y)||check(x+b,y+a)||check(x+a,y+b)||check(x+a+b,y+a+b)) printf("Y\n");
else printf("N\n");
}
return 0;
}
本文探讨了如何通过八个特定基底向量的加减操作,确保能够得到坐标(x,y)的相邻值。关键在于理解裴蜀定理的应用,以及通过奇偶性分析确定加权系数的组合。通过一系列的逻辑推导,博主展示了如何利用gcd确定向量组合的可行性。

被折叠的 条评论
为什么被折叠?



