先贴题目:xdoj1125
思路:给了三角形的三个顶点a,b,c,和一个点x;
判断abc的面积 是否= xab的面积+xbc的面积+xac的面积;
思路很简单。。。关键在于怎么求三角形面积。
一开始我的方法是:割补法,所求面积=矩形面积-三个直角三角形的面积。
然而我还是太天真。。。。在wa的我快哭了的时候,终于发现,这个方法解决不了钝角三角形啊啊啊啊啊啊啊~~!!
于是乎,亲爱的同志们,还是老老实实的用海伦公式吧。。。
上代码:
#include <bits/stdc++.h>
using namespace std;
double area(double x1,double y1,double x2,double y2,double x3,double y3)
{
double a=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)),b=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)),c=sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
return sqrt((a+b+c)*(a+b-c)*(a+c-b)*(b+c-a))/4.0;
}
int main()
{
double x,y,x1,y1,x2,y2,x3,y3;
while (scanf("%lf %lf %lf %lf %lf %lf %lf %lf",&x1,&y1,&x2,&y2,&x3,&y3,&x,&y)!=EOF)
{
if (abs(area(x, y, x1, y1, x2, y2)+area(x, y, x1, y1, x3, y3)+area(x, y, x2, y2, x3, y3)-area(x1, y1, x2, y2, x3, y3))<0.001)
{
printf("Orz\n");
}
else printf("stO\n");
}
return 0;
}