春校赛–求索溪边树下的小瓜 (10分)
题目内容:
“三峡畔,长江边…”小瓜哼着校歌,慢悠悠的求索溪边散步。忽然,他在求索溪旁边发现一个非常漂亮的银杏树。于是小瓜走到树下一手拉着银杏树,开始蹦蹦跳跳的围着银杏树转圈。现在设小瓜发现银杏树时,自己的位置为A(Xa,Ya),在银杏树下初始位置为B(Xb,Yb),围着银杏树(坐标为(0,0))顺时针转了K弧度,结束时小瓜的位置为C(Xc,Yc)。现在小瓜想知道自己发现银杏树时的位置A,在树下的初始位置B,与结束时的位置C形成的三角形△ABC面积S。你能编程帮助小瓜解决这个问题吗?(π取3.1415926)
输入描述
输入A点坐标,B点坐标以及弧度K(坐标为整型实数)
输出描述
围成的△ABC的面积S(结果保留小数点后两位)
输入样例
-2 0 -1 0 1.5707963
输出样例
0.50
简单的数学题,当时害怕有坑就没写,后悔。
#include"iostream"
#include"cmath"
#include"cstdio"
#define PI 3.1415926
using namespace std;
double Xa,Xb,Ya,Yb,OA,OB,AB,Ca,AC,BC,q,S,k;
int main()
{
cin >> Xa >> Ya>>Xb>>Yb>>k;
OA = sqrt(Xa*Xa+Ya*Ya);
OB = sqrt(Xb*Xb+Yb*Yb);
AB = sqrt((Xa-Xb)*(Xa-Xb)+(Ya-Yb)*(Ya-Yb));
Ca = (OA*OA+OB*OB-AB*AB)/(2*OA*OB);
AC = sqrt(OB*OB+OA*OA-2*cos(k-acos(Ca))*OB*OA);
BC = sqrt(2*OB*OB-2*cos(k)*OB*OB);
q = (AB+AC+BC)/2;
S=sqrt(q*(q-AB)*(q-AC)*(q-BC));
printf("%.2lf\n",S);
return 0;
}