首页 > 代码库 > poj1927Area in Triangle
poj1927Area in Triangle
链接
物理渣只能搜题解了。。
分三种情况
1、len>=a+b+c
2、len<内切圆半径 圆的面积是最大的 --》以len为周长的圆
3、看这篇http://blog.sina.com.cn/s/blog_6a46cc3f0100tujn.html
1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<stdlib.h> 6 #include<vector> 7 #include<cmath> 8 #include<queue> 9 #include<set>10 using namespace std;11 #define N 10000012 #define LL long long13 #define INF 0xfffffff14 const double eps = 1e-8;15 const double pi = acos(-1.0);16 const double inf = ~0u>>2;17 int dcmp(double x)18 {19 if(fabs(x)<eps) return 0;20 else return x<0?-1:1;21 }22 int main()23 {24 double a,b,c,l;25 int kk = 0;26 while(scanf("%lf%lf%lf%lf",&a,&b,&c,&l)!=EOF)27 {28 if(fabs(a)<eps&&fabs(b)<eps&&fabs(c)<eps&&fabs(l)<eps) break;29 double p = (a+b+c)/2;30 double area = sqrt(p*(p-a)*(p-b)*(p-c));31 double r = sqrt((p-a)*(p-b)*(p-c)/p);32 double ans ;33 if(dcmp(2*pi*r-l)>=0)34 {35 ans = l*l/(4*pi);36 //cout<<"2"<<endl;37 }38 else if(dcmp(l-a-b-c)>=0)39 {40 ans = area;41 //cout<<"1"<<endl;42 }43 else44 {45 double k = (a+b+c-l)/(a+b+c-2*pi*r);46 r*=k;47 ans = area-area*k*k+pi*r*r;48 // cout<<"3"<<endl;49 }50 printf("Case %d: %.2f\n",++kk,ans);51 }52 return 0;53 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。