Nowadays, little haha got a problem from his teacher.His teacher wants to design a big logo for the campus with some circles tangent with each other. And now, here comes the problem. The teacher want to draw the logo on a big plane. You could see the example of the graph in the Figure1

At first, haha's teacher gives him two big
circles, which are tangent with each other. And, then, he wants to add
more small circles in the area where is outside of the small circle, but
on the other hand, inside the bigger one (you may understand this
easily if you look carefully at the Figure1.

Each small circles are added by the following principles.

* you should add the small circles in the order like Figure1.

* every time you add a small circle, you should make sure that it is tangented with the other circles (2 or 3 circles) like Figure1.

    

The teacher wants to know the total amount of pigment he would use when he creates his master piece.haha doesn't know how to answer the question, so he comes to you.

Task

The teacher would give you the number of small circles he want to
add in the figure. You are supposed to write a program to calculate the
total area of all the small circles.

InputThe first line contains a integer t(1≤t≤1200), which means the number of the test cases. For each test case, the first line insist of two integers R1 and R2 separated by a space (1≤R≤100),
which are the radius of the two big circles. You could assume that the
two circles are internally tangented. The second line have a simple
integer N (1≤N≤10 000 000), which is the number of small circles the teacher want to add.

OutputFor each test case:

Contains a number in a single line, which shows the total area of
the small circles. You should out put your answer with exactly 5 digits
after the decimal point (NO SPJ).

Sample Input

2
5 4
1
4 5
1

Sample Output

3.14159
3.14159

笛卡尔定理

若平面上四个半径为r1、r2、r3、r4的圆两两相切于不同点,则其半径满足以下结论:
(1)若四圆两两外切,则

(2)若半径为r1、r2、r3的圆内切于半径为r4的圆中,则

。    -------百度百科

 
韦达定理
 
设一元二次方程

中,两根x₁、x₂有如下关系:

 
-------百度百科
 
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cmath>
using namespace std;
typedef long long ll;
const double eps = 1e-;
const double PI = acos(-1.0); void Debug()
{
puts("");
cout<<"+++++++++++++++++++++++++++分界线++++++++++++++++++++++++++++++"<<endl;
for(int i=; i<; i++)
{
for(int j=; j<; j++)
{
cout<<<<" ";
}
cout<<endl;
}
cout<<"+++++++++++++++++++++++++++分界线++++++++++++++++++++++++++++++"<<endl;
puts("");
} int n;
double r1, r2, r3,r4;
double ans;
void sovel()
{
if(r1 < r2) swap(r1,r2);
r3 = r1-r2;
double k1 = -1.0/r1, k2 = 1.0/r2, k3 = 1.0/r3, k4 = k1+k2+k3;
ans = r3*r3;
for(int i = ; i <= n; i++)
{
r4 = 1.0/k4;
ans += r4*r4;
if(r4*r4 < eps) break;
if(i+ <= n) ans +=r4*r4, i++;
double k5 = *(k1+k2+k4) - k3;
k3 = k4;
k4 = k5;
}
printf("%.5f\n", ans*PI); } int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie();
int T;
cin >> T;
while(T--)
{
cin >> r1 >>r2 >> n;
sovel(); }
return ;
}

圆的反演 :

http://www.cnblogs.com/flipped/p/7397942.html

The Designer (笛卡尔定理+韦达定理 || 圆的反演)的更多相关文章

  1. CF77E Martian Food(圆的反演or 笛卡尔定理+韦达定理)

    题面 传送门 这题有两种方法(然而两种我都想不到) 方法一 前置芝士 笛卡尔定理 我们定义一个圆的曲率为\(k=\pm {1\over r}\),其中\(r\)是圆的半径 若在平面上有两两相切,且六个 ...

  2. HDU 6158 笛卡尔定理+韦达定理

    The Designer Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  3. 爆炸几何之 CCPC网络赛 I - The Designer (笛卡尔定理)

    本文版权归BobHuang和博客园共有,不得转载.如想转载,请联系作者,并注明出处.   Nowadays, little hahahaha got a problem from his teache ...

  4. HDU 6158 笛卡尔定理 几何

    LINK 题意:一个大圆中内切两个圆,三个圆两两相切,再不断往上加新的相切圆,问加上的圆的面积和.具体切法看图 思路:笛卡尔定理: 若平面上四个半径为r1.r2.r3.r4的圆两两相切于不同点,则其半 ...

  5. 19牛客暑期多校 round1 A 有关笛卡尔树的结论

    题目传送门//res tp nowcoder 分析 定理:B1~B2当且仅当B1与B2有同构的笛卡尔树. (B₁~B₂ iff B₁ and B₂ have isomorphic Cartesian ...

  6. codevs2178 表达式运算Cuties[笛卡尔树]

    2178 表达式运算Cuties  时间限制: 1 s  空间限制: 32000 KB  题目等级 : 大师 Master 题解  查看运行结果     题目描述 Description 给出一个表达 ...

  7. POJ 2559 Largest Rectangle in a Histogram ——笛卡尔树

    [题目分析] 本来是单调栈的题目,用笛卡尔树可以快速的水过去. 把每一个矩阵看成一个二元组(出现的顺序,高度). 然后建造笛卡尔树. 神奇的发现,每一个节点的高度*该子树的大小,就是这一块最大的子矩阵 ...

  8. NOIP2011pj表达式的值[树形DP 笛卡尔树 | 栈 表达式解析]

    题目描述 对于1 位二进制变量定义两种运算: 运算的优先级是: 先计算括号内的,再计算括号外的. “× ”运算优先于“⊕”运算,即计算表达式时,先计算× 运算,再计算⊕运算.例如:计算表达式A⊕B × ...

  9. CROSS JOIN连接用于生成两张表的笛卡尔集

    将两张表的情况全部列举出来 结果表: 列= 原表列数相加 行= 原表行数相乘     CROSS JOIN连接用于生成两张表的笛卡尔集. 在sql中cross join的使用: 1.返回的记录数为两个 ...

随机推荐

  1. 基于物理规则的渲染(PBR)

    为毛我的效果那么挫,我也是按照公式来的 2017 -3 -20

  2. Windows更新导致的打印问题

    最近很多BarTender用户都出现了打印问题,如3700错误消息及3721错误消息.这个问题存在于BarTender的所有版本,这主要是因为什么?又该如何去解决呢? 根据BarTender英文官网提 ...

  3. java生成zip压缩文件,解压缩文件

    1.生成zip public static void main(String[] args) { try { // testZip("c:\\temp.txt", "c: ...

  4. chrome自动填表会遮挡input中背景图的问题解决方法

    在做某项目登录界面时,发现用户密码框在Chrome自动填充时,input中的背景框会被遮住.网上也搜了一下,没有一个有效的解决方法. 来看csdn的登录界面,也有这个问题. 后来在浏览网页时,无意中发 ...

  5. HttpServletResponse实现文件下载

    import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import ...

  6. ubuntu16.04英文版搜狗输入法安装报错

    1.因为是英文版的,所以需要更新中文字体 Systems Settings>Language Support ,会提示自动更新,这个时候KeyBorad input method 选择不了fci ...

  7. vue2.0 在微信端如何使用本地IP访问项目

    我们会遇到这样的需求,在PC端开发vue脚手架项目,希望在微信端随时浏览页面(如果打包再发布到服务器又太麻烦),怎么办? 思路很简单:保证手机和电脑在同一个IP下,用同一个IP访问项目,这样就可以了: ...

  8. 跨平台桌面程序框架Electron

    https://www.npmjs.com/ js库

  9. nvm的安装

    安装前可先卸载原来的node, npm, 安装成功后,可用nvm装node 一.用nvm-noinstall.zip安装 1.nvm-windows 下载 https://github.com/cor ...

  10. 查看oracle数据库是否为归档模式

    查看oracle数据库是否为归档模式   [1]   1.select name,log_mode from v$database;   NAME LOG_MODE   --------------- ...