1305 - Area of a Parallelogram
Time Limit: 1 second(s) | Memory Limit: 32 MB |
A parallelogram is a quadrilateral with two pairs of parallel sides. See the picture below:
Fig: a parallelogram
Now you are given the co ordinates of A, B and C, you have to find the coordinates of D and the area of the parallelogram. The orientation of ABCD should be same as in the picture.
Input
Input starts with an integer T (≤ 1000), denoting the number of test cases.
Each case starts with a line containing six integers Ax, Ay, Bx, By, Cx, Cy where (Ax, Ay) denotes the coordinate of A, (Bx, By) denotes the coordinate of B and (Cx, Cy) denotes the coordinate of C. Value of any coordinate lies in the range [-1000, 1000]. And you can assume that A, B and C will not be collinear.
Output
For each case, print the case number and three integers where the first two should be the coordinate of D and the third one should be the area of the parallelogram.
Sample Input | Output for Sample Input |
3 0 0 10 0 10 10 0 0 10 0 10 -20 -12 -10 21 21 1 40 | Case 1: 0 10 100 Case 2: 0 -20 200 Case 3: -32 9 1247 |
思路:顶点根据中点坐标求,面积求的话我是用向量旳叉积算的 ,做完后同学说他用给出的三个点的坐标算出角计算的面积;
失误:比赛时想了好长时间,想计算角度的,但是面积一定是int,计算角度后还要转化而且当时思路比较乱想的是算出两个角之后得出夹角,没有考虑到用余弦定理算角,当误了很长的时间,最后还是想到了向量叉积的定义,才计算出来;
AC代码:
#include<cstdio>
int main()
{
int T,xa,xb,xc,xd,ya,yb,yc,yd,S,Kase=0;
scanf("%d",&T);
while(T--)
{
scanf("%d %d %d %d %d %d",&xa,&ya,&xb,&yb,&xc,&yc);
xd=xa+xc-xb;
yd=ya+yc-yb;
S=(xb-xa)*(yc-ya)-(xc-xa)*(yb-ya);
if(S<0) S=-S;
printf("Case %d: %d %d %d\n",++Kase,xd,yd,S);
}
return 0;
}