Problem E
In-Circle
Input: Standard Input

Output: Standard Output

In-circle of a triangle is the circle that touches all the three sides of the triangle internally. The center of the in-circle of a triangle happens to be the common intersection point of the three bisectors of the internal angles. In this problem you will not be asked to find the in-circle of a triangle, but will be asked to do the opposite!!

 
You can see in the figure above that the in-circle of triangle ABC touches the sides AB, BC and CA at point P, Q and R respectively and P, Q and R divides AB, BC and CA in ratio m1:n1, m2:n2 and m3:n3 respectively. Given these ratios and the value of the radius of in-circle, you have to find the area of triangle ABC.

Input

First line of the input file contains an integer N (0<N<50001), which denotes how many input sets are to follow. The description of each set is given below.

Each set consists of four lines. The first line contains a floating-point number r (1<r<5000), which denotes the radius of the in-circle. Each of the next three lines contains two floating-point numbers, which denote the values of m1, n1, m2, n2, m3 and n3 (1<m1, n1, m2, n2, m3, n3<50000) respectively.

Output

For each set of input produce one line of output. This line contains a floating-point number that denotes the area of the triangle ABC. This floating-point number should contain four digits after the decimal point. Errors less than 5*10-3 will be ignored. Use double-precision floating-point number for calculation.

Sample Input                               Output for Sample Input

2

140.9500536497

15.3010457320 550.3704847907

464.9681681852 65.9737378230

55.0132446384 10.7791711946

208.2835101182

145.7725891419 8.8264176452

7.6610997600 436.1911036207

483.6031801012 140.2797089713

400156.4075

908824.1322


Problemsetter: Shahriar Manzoor

Special Thanks: Mohammad Mahmudur Rahman


  解析几何

  思路是先设AP=AC=x,则根据比例关系可以知道:

  三边  a = (n1+m1)/m1*x;  b = (n3+m3)/n3*x;  c = m3/n3*(n2+m2)/n2*x;

  将系数提出,设 k1 = (n1+m1)/m1;  k2 = (n3+m3)/n3;  k3 = m3/n3*(n2+m2)/n2;

  由海伦公式可知 S = sqrt(p*(p-a)*(p-b)*(p-c));  (p = (a+b+c)/2)  //公式一

  由边和半径的也能求出三角形的面积 S = (a*r+b*r+c*r)/2 = p*r;      //公式二

  联立公式一和公式二可得:

  x = 2*sqrt(r*r*(k1+k2+k3)/((k2+k3-k1)*(k1+k3-k2)*(k1+k2-k3)));

  带入公式一得:

  S = (k1+k2+k3)*x*r/2;

  PS:代码很短,主要是分析过程。

  代码

 #include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
int n;
cin>>n;
while(n--){
double r;
double m1, n1, m2, n2, m3, n3;
cin>>r; //输入半径
cin>>m1>>n1>>m2>>n2>>m3>>n3; //输入比例
double k1,k2,k3;
k1 = (n1+m1)/m1;
k2 = m3*(n2+m2)/(n3*n2);
k3 = (n3+m3)/n3;
double x = *sqrt(r*r*(k1+k2+k3)/((k2+k3-k1)*(k1+k3-k2)*(k1+k2-k3))); //设AP=AR=x
double s = (k1+k2+k3)*x*r/;
cout<<setiosflags(ios::fixed)<<setprecision();
cout<<s<<endl;
}
return ;
}

Freecode : www.cnblogs.com/yym2013

UVa 11524:In-Circle(解析几何)的更多相关文章

  1. UVa 11524 - InCircle

    推公式 #include <cstdio> #include <cmath> double Cal( double a, double b, double c ) { retu ...

  2. uva 11524 - InCircle (二分法)

    题意:三角形ABC的内切圆把它的三边分别划分成 m1:n1,m2:n2 和 m3:n3 的比例.另外已知内切圆的半径 r ,求三角形ABC 的面积. #include<iostream> ...

  3. ACM计算几何题目推荐

    //第一期 计算几何题的特点与做题要领: 1.大部分不会很难,少部分题目思路很巧妙 2.做计算几何题目,模板很重要,模板必须高度可靠. 3.要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面 ...

  4. uva 1463 - Largest Empty Circle on a Segment(二分+三分+几何)

    题目链接:uva 1463 - Largest Empty Circle on a Segment 二分半径,对于每一个半径,用三分求出线段到线段的最短距离,依据最短距离能够确定当前R下每条线段在[0 ...

  5. .Uva&LA部分题目代码

    1.LA 5694 Adding New Machine 关键词:数据结构,线段树,扫描线(FIFO) #include <algorithm> #include <cstdio&g ...

  6. UVA 1452 八 Jump

    Jump Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Practi ...

  7. UVA - 524 Prime Ring Problem(dfs回溯法)

    UVA - 524 Prime Ring Problem Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & % ...

  8. BZOJ 1502: [NOI2005]月下柠檬树 [辛普森积分 解析几何 圆]

    1502: [NOI2005]月下柠檬树 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1070  Solved: 596[Submit][Status] ...

  9. UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There Was One / POJ 3517 And Then There Was One / Aizu 1275 And Then There Was One (动态规划,思维题)

    UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There W ...

随机推荐

  1. ArrayList与LinkedList区别

    ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个 ...

  2. mysql delete删除记录数据库空间不减少问题解决方法

    记得在中学时学计算机时老师就告诉我delete删除记录只是给数据库中的记录加一个删除标识了,这样数据库空间并不是减少了,当时没想这么多,昨天发现一个数据库利用delete 删除之后容量没变,后来百度了 ...

  3. C/S B/S 及WEB工作原理

     一.C/S B/S区别 (http://wenku.baidu.com/link?url=e8bxaqz_lYCXws6TlDRJEq1qsLumNTBhr3Es6eA1ZuhHhq9FZGbVgo ...

  4. U盘10分钟安装linux系统

    说来可能不信,10分钟包括创建U盘启动盘,用U盘启动,安装,不联网,不更新,不安装语言包,等装好系统再更新. Windows系统硬盘分区 如果你用的是Windows系统,现有的硬盘没有未分配的空间,需 ...

  5. ls -alrth 及ls 详解

    idcdpi  抓包过程中 用了命令  ls   - alrth :命令,所以回头重新学习 ls命令 linux ls和 ll 命令 标签: linuxsocketssolarisbash出版扩展 2 ...

  6. Java中Comparable和Comparator实现对象比较

    1.通过Comparable实现排序 package Comparable; import java.util.Arrays; public class ComparableUser implemen ...

  7. web前端socket封装库--giraffe

    摘要: 最近在做前端的socket消息推送,使用了socket.io.js的最新版本.使用过的都知道socket.io.js是基于消息类型来通信的,如果消息类型多了就很难维护.所以本人就对socket ...

  8. js实现把网页table导成Excel

    //导出excel function exportExcel(DivID,strTitle){ if(DivID==null) { return false; } var jXls, myWorkbo ...

  9. mongo链接报错:couldn't connect to server 127.0.0.1:27017 (127.0.0.1)

    angela@angeladeMacBook-Air:/data/db$mongo MongoDB shell version: 2.6.1 connecting to: test 2014-06-0 ...

  10. HDU 1875 畅通工程再续 (prim最小生成树)

    B - 畅通工程再续 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit S ...