1 条题解

  • 0
    @ 2025-6-15 21:55:46
    //poj 1927
    //sep9
    #include <iostream>
    #include <cmath>
    #include <cstdio>  // 添加缺少的头文件
    using namespace std;
    const double pi=acos(-1.0);
    int main()
    {
    	double a,b,c,l;
    	int cases=0;
    	while(scanf("%lf%lf%lf%lf",&a,&b,&c,&l)==4){
    		if(fabs(a)<1e-6&&fabs(b)<1e-6&&fabs(c)<1e-6&&fabs(l)<1e-6)
    			break;
    		double p=(a+b+c)/2;
    		double S=sqrt(p*(p-a)*(p-b)*(p-c));
    		double R=S/p;
    		if(l>=a+b+c)
    			printf("Case %d: %.2lf\n",++cases,S);
    		else if(l<=pi*2*R)
    			printf("Case %d: %.2lf\n",++cases,l*l/(4*pi));
    		else{
    			double r=R*(2*p-l)/(2*p-2*pi*R);// perimeter of small:2*p-l+2*pi*r
    			double s=S*(r/R)*(r/R);	
    			printf("Case %d: %.2lf\n",++cases,S-s+pi*r*r);
    		}
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    928
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    递交数
    2
    已通过
    1
    上传者