点击打开题目
1305 - Area of a Parallelogram
PDF (English) | Statistics | Forum |
---|
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 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 Band (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.
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 |
分一下斜率不存在的情况。
代码如下:
#include <cstdio>
#include <cstring>
#include <cmath>
#include <queue>
#include <map>
#include <vector>
#include <stack>
#include <algorithm>
using namespace std;
#define INF 0x3f3f3f3f
#define CLR(a,b) memset(a,b,sizeof(a))
#define LL long long
#define PI acos(-1.0)
int main()
{
int u;
int Case = 1;
double x1,y1,x2,y2,x3,y3;
double x4,y4;
double S;
scanf ("%d",&u);
while (u--)
{
scanf ("%lf %lf %lf %lf %lf %lf",&x1,&y1,&x2,&y2,&x3,&y3);
printf ("Case %d: ",Case++);
x4 = x1 - x2 + x3;
y4 = y1 + y3 - y2;
if (x1 == x2)
S = fabs(y2 - y1) * fabs(x1 - x4);
else if (y1 == y2)
S = fabs(x2-x1) * fabs(y4-y1);
else
{
double l,h;
double k;
l = sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2));
k = (y2-y1) / (x2-x1);
S = fabs((y4-k*x4)-(y1-k*x1)) / (sqrt(k*k+1)) * l;
}
printf ("%.lf %.lf %.lf\n",x4,y4,S);
}
return 0;
}