为什么我的总是80分

代码如下
c++
#include<cstdio>
#include<cmath>
#include<algorithm>
#define sqr(x) ((x)*(x))
#define eps 1e-6
using namespace std;
double a[3];
double area(double a,double b,double c){//{{{
double p=(a+b+c)/2;
return sqrt(p*(p-a)*(p-b)*(p-c));
}//}}}
void calc(){//{{{
sort(a,a+3);
if(a[0]+a[1]<=a[2]){
printf("-1\n");
return;
}
double sin[3],cos[3],ratio,x;
for(int i=0;i<3;i++){
cos[i]=(sqr(a[(i+1)%3])+sqr(a[(i+2)%3])-sqr(a[i]))/(2*a[(i+1)%3]*a[(i+2)%3]);
sin[i]=sqrt(1-sqr(cos[i]));
}
ratio=a[0]/sin[0];
if(cos[2]<-eps)x=sin[0]*sin[1]*sin[2]*ratio/(sin[2]+sin[1]*sin[0]);
else x=sin[0]*sin[1]*sin[2]*ratio/(sin[0]+sin[1]*sin[2]);
printf("%.3lf\n",area(a[0],a[1],a[2])-sqr(x));
}//}}}
int main()
{
scanf("%lf%lf%lf",a,a+1,a+2);
do{
calc();
scanf("%lf%lf%lf",a,a+1,a+2);
}while(a[0]>eps);
return 0;
}

总是最后一个点wa,是怎么回事?

0 条评论

目前还没有评论...

信息

ID
1511
难度
8
分类
计算几何 | 几何知识 点击显示
标签
(无)
递交数
287
已通过
39
通过率
14%
被复制
2
上传者