A . Where do I Turn ?
题意:平面上有三个点A,B,C,已知AB两点连成一条直线,C点要么在直线AB上,要么就与直线AB垂直。已知初始方向是从A到B的方向并且位于B点上,求C点是向左还是直走还是向右。
思路:先排除三点在一条直线上的情况,再分四个情况分别分析左右方向。
AC代码:
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main()
{
__int64 x1,y1,x2,y2,x3,y3;
while(scanf("%I64d %I64d", &x1, &y1)!=EOF)
{
scanf("%I64d %I64d", &x2, &y2);
scanf("%I64d %I64d", &x3, &y3);
if( (x2-x1)*(y3-y2)==(y2-y1)*(x3-x2) )
{
printf("TOWARDS\n");
}
else
{
if(x2-x1>=0 && y2-y1>0)
{
if(x3-x2>0) printf("RIGHT\n");
else printf("LEFT\n");
}
else if(x2-x1<=0 && y2-y1<0)
{
if(x3-x2>0) printf("LEFT\n");
else printf("RIGHT\n");
}
else if(x2-x1<0 && y2-y1>=0)
{
if(y3-y2>0) printf("RIGHT\n");
else printf("LEFT\n");
}
else if(x2-x1>0 && y2-y1<=0)
{
if(y3-y2>0) printf("LEFT\n");
else printf("RIGHT\n");
}
}
}
return 0;
}