【LightOJ 1305】

来源:互联网 发布:java基础班 编辑:程序博客网 时间:2024/05/18 01:34

Description
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
3
0 0 10 0 10 10
0 0 10 0 10 -20
-12 -10 21 21 1 40
Sample Output
Case 1: 0 10 100
Case 2: 0 -20 200
Case 3: -32 9 1247

cos Q=(a^2+b^2-c^2)/(2* a * b);

谨以此题记录暑期培训最后一次比赛~~~

#include<cstdio>#include<cmath>using namespace std;int main(){    int nl=1,T;    double a1,a2,b1,b2,c1,c2,x,y,ka,kb,kc,q,ans;    scanf("%d",&T);    while(T--)    {        scanf("%lf%lf%lf%lf%lf%lf",&a1,&a2,&b1,&b2,&c1,&c2);      x=c1-(b1-a1);      y=c2-(b2-a2);      ka=(a1-b1)*(a1-b1)+(a2-b2)*(a2-b2);      kb=(c1-b1)*(c1-b1)+(c2-b2)*(c2-b2);      kc=(c1-a1)*(c1-a1)+(c2-a2)*(c2-a2);      q=ka+kb-kc;      ka=sqrt(ka);      kb=sqrt(kb);      q/=2*ka*kb;//求出 cosq=sqrt(1-q*q);      ans=ka*kb*q;//求出面积=a*b*sin a/2,两个三角形乘以二      printf("Case %d: %.0lf %.0lf %.0lf\n",nl++,x,y,ans);    }    return 0;}
0 0
原创粉丝点击