首页 > 其他 > 详细

ZOJ 3806 Incircle and Circumcircle

时间:2016-04-21 20:13:28      阅读:168      评论:0      收藏:0      [点我收藏+]

题意:已知三角形的内接圆半径和外接圆半径,求符合的三角形边长

思路:假设是等腰三角形,内接圆半径最大的情况是等边三角形,直接在(0,pi/3)范围内二分底角

#include <iostream>
#include <cmath>
#include <stdio.h>
#include <algorithm>
using namespace std;
#define eps 1e-10
double pi=2*asin(1.0);
int main()
{
    double r,R;
    int i,j,k;
    while(scanf("%lf%lf",&r,&R)!=EOF)
    {
        if(2*r>R) {printf("NO Solution!\n");continue;}
        double left=0,right=pi/3.0;
        double A,B,C;
        while(left+eps<right)
        {
            double mid=(left+right)/2;
            A=B=mid;
            C=pi-mid-mid;
            double tp=4*R*sin(A/2)*sin(B/2)*sin(C/2);
            if(tp<r) left=mid;
            else right=mid;
        }
        printf("%.10f %.10f %.10f\n",2*R*cos(C/2),2*R*cos(C/2),2*2*R*cos(C/2)*cos(A));
    }
    return 0;
}

 

ZOJ 3806 Incircle and Circumcircle

原文:http://www.cnblogs.com/zuferj115/p/5418333.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!