个人感觉我的解法比官方题解好理解得多
因为是任意一个法向量嘛,不妨设$x=1$
然后解一个二元一次方程就可以解决了
但是因为要求输出三个整数
代码
#include<iostream> #include<cstdio> #include<algorithm> #define int long long using namespace std; int x1,y1,z1,x2,y2,z2,x,y,z; signed main() { while(scanf("%lld%lld%lld%lld%lld%lld",&x1,&y1,&z1,&x2,&y2,&z2)==6) { x=(y2*z1-y1*z2)*y2; z=(y1*x2-x1*y2)*y2; y=-x2*(y2*z1-y1*z2)-z2*(y1*x2-x1*y2); int g=__gcd(x,__gcd(y,z)); x/=g,y/=g,z/=g; //这两句gcd取最小值用的,因为怕解出来爆long long printf("%lld %lld %lld ",x,y,z); } return 0; }