前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FZU 2099 魔法阵(计算几何)

FZU 2099 魔法阵(计算几何)

作者头像
ShenduCC
发布2018-04-26 17:21:03
6330
发布2018-04-26 17:21:03
举报
文章被收录于专栏:算法修养算法修养算法修养

 Problem 2099 魔法阵

Accept: 120    Submit: 289 Time Limit: 1000 mSec    Memory Limit : 32768 KB

 Problem Description

两个正三角形和一个圆组成一个魔法阵,如图,圆心和正三角形内心重合,三角形的重叠部分是一个正六边形。求魔法阵轮廓围成的面积。

 Input

第一行一个整数T表示数据组数(T<=1000)。接下来T行每行2个实数,正三角形边长L和圆的半径R(0<L,R<1000)。

 Output

对于每组数据输出一个实数,魔法阵轮廓围成的面积,保留2位小数。

 Sample Input

4493.5 176.4741.7 374.0100.0 1.01.0 100.0

 Sample Output

141994.02449787.965773.5031415.93

计算几何

#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#include <math.h>
#include <stdio.h>

using namespace std;
double l,r;
double ans;
double pi=2*asin(1.0);
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%lf%lf",&l,&r);
        if(r>=l/sqrt(3.0))
            ans=pi*r*r;
        else if(r<=l/3.0)
            ans=sqrt(3.0)/3.0*l*l;
        else
        {
            double date=16*r*r-4.0/3.0*l*l;
            double x=(2*l-sqrt(date))/8;
            double s2=2*x*(l/sqrt(3.0))*1.0/2;
            double s3=pi*r*r*asin(x/r)/pi;
            double s4=s2-s3;
            ans=pi*r*r+s4*6;
        }
        printf("%.2f\n",ans);
    }
    return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-05-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Accept: 120    Submit: 289 Time Limit: 1000 mSec    Memory Limit : 32768 KB
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档