可以发现ABC其实都可以旋转 转来转去无非是变幻下坐标系
那么我们设D为C旋转后的向量 B0B1B2B3为旋转后的xiangliang
那么就是判断 A+xC+yD=B0/B1/B2/B3 是否有整数解 注意些细节
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#define X first
#define Y second
using namespace std;
typedef long long ll;
typedef pair<ll,ll> abcd;
inline bool calc(ll a1,ll b1,ll c1,ll a2,ll b2,ll c2){
if (!a1 && !b1 && c1) return 0;
if (!a2 && !b2 && c2) return 0;
return ((b1*a2-b2*a1)?(c1*a2-c2*a1)%(b1*a2-b2*a1)==0:(c1*a2-c2*a1)==0) && ((b2*a1-b1*a2)?(c1*b2-c2*b1)%(b2*a1-b1*a2)==0:(c1*b2-c2*b1)==0);
}
abcd a,b,c,d;
int main(){
freopen("t.in","r",stdin);
freopen("t.out","w",stdout);
scanf("%lld%lld%lld%lld%lld%lld",&a.X,&a.Y,&b.X,&b.Y,&c.X,&c.Y);
d.X=-c.Y; d.Y=c.X;
int ans=0;
ans|=calc(c.X,d.X,b.X-a.X,c.Y,d.Y,b.Y-a.Y);
b=abcd(-b.Y,b.X);
ans|=calc(c.X,d.X,b.X-a.X,c.Y,d.Y,b.Y-a.Y);
b=abcd(-b.Y,b.X);
ans|=calc(c.X,d.X,b.X-a.X,c.Y,d.Y,b.Y-a.Y);
b=abcd(-b.Y,b.X);
ans|=calc(c.X,d.X,b.X-a.X,c.Y,d.Y,b.Y-a.Y);
ans?printf("YES\n"):printf("NO\n");
return 0;
}