列表

详情


NC204595. 太阳花田

描述

已知太阳花田是一个长为 ,宽为 的矩形。
幽香站在花田的某个位置,她虽然不能移动,但可以发射魔炮击退入侵者。
魔炮的攻击距离为 ,可以朝任意方向发射。也就是说,幽香守护的范围可以看作一个半径为 的圆。
幽香想知道,自己能守护的花田最大面积是多少?
注:

输入描述

一行三个正整数,

输出描述

幽香能守护花田的最大面积。如果你和正确答案的误差不超过,则认为你的答案正确。

示例1

输入:

2 4 1

输出:

3.1416

说明:

示例2

输入:

1 2 4

输出:

2.0000000

说明:

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(clang++11) 解法, 执行用时: 7ms, 内存消耗: 400K, 提交时间: 2020-11-20 17:39:09

#include<bits/stdc++.h>
using namespace std;
const double pi=3.1415926536;
int main(){
   // freopen("7.in","r",stdin);
   // freopen("7.out","w",stdout);
    double x,y,r;
    cin>>x>>y>>r;
    x/=2,y/=2;
    if(x>y)swap(x,y);

    double ma=(sqrt(x*x+y*y));
    if(r>=ma)printf("%.2lf",4*x*y);
    else if(r<=x)printf("%.2lf",pi*r*r);
    else if(r<=y){
        double h=sqrt(r*r-x*x);
        printf("%.2lf",2*asin(x/r)*r*r+2*h*x);
    }
    else{
        double h1=sqrt(r*r-x*x),h2=sqrt(r*r-y*y);
        printf("%.2lf",(2*pi-4*acos(x/r)-4*acos(y/r))*r*r/2+2*h1*x+2*h2*y);
    }
}

上一题