地址:https://nanti.jisuanke.com/t/17314

题目:

Three circles C_{a}C​a​​, C_{b}C​b​​, and C_{c}C​c​​, all with radius RR and tangent to each other, are located in two-dimensional space as shown in Figure 11. A smaller circle C_{1}C​1​​ with radius R_{1}R​1​​ (R_{1}<RR​1​​<R) is then inserted into the blank area bounded by C_{a}C​a​​, C_{b}C​b​​, and C_{c}C​c​​ so that C_{1}C​1​​ is tangent to the three outer circles, C_{a}C​a​​, C_{b}C​b​​, and C_{c}C​c​​. Now, we keep inserting a number of smaller and smaller circles C_{k}\ (2 \leq k \leq N)C​k​​ (2≤k≤N) with the corresponding radius R_{k}R​k​​ into the blank area bounded by C_{a}C​a​​, C_{c}C​c​​ and C_{k-1}C​k−1​​ (2 \leq k \leq N)(2≤k≤N), so that every time when the insertion occurs, the inserted circle C_{k}C​k​​ is always tangent to the three outer circles C_{a}C​a​​, C_{c}C​c​​ and C_{k-1}C​k−1​​, as shown in Figure 11

Figure 1.

(Left) Inserting a smaller circle C_{1}C​1​​ into a blank area bounded by the circle C_{a}C​a​​, C_{b}C​b​​ and C_{c}C​c​​.

(Right) An enlarged view of inserting a smaller and smaller circle C_{k}C​k​​ into a blank area bounded by C_{a}C​a​​, C_{c}C​c​​ and C_{k-1}C​k−1​​ (2 \leq k \leq N2≤k≤N), so that the inserted circle C_{k}C​k​​ is always tangent to the three outer circles, C_{a}C​a​​, C_{c}C​c​​, and C_{k-1}C​k−1​​.

Now, given the parameters RR and kk, please write a program to calculate the value of R_{k}R​k​​, i.e., the radius of the k-thk−th inserted circle. Please note that since the value of R_kR​k​​ may not be an integer, you only need to report the integer part of R_{k}R​k​​. For example, if you find that R_{k}R​k​​ = 1259.89981259.8998 for some kk, then the answer you should report is 12591259.

Another example, if R_{k}R​k​​ = 39.102939.1029 for some kk, then the answer you should report is 3939.

Assume that the total number of the inserted circles is no more than 1010, i.e., N \leq 10N≤10. Furthermore, you may assume \pi = 3.14159π=3.14159. The range of each parameter is as below:

1 \leq k \leq N1≤k≤N, and 10^{4} \leq R \leq 10^{7}10​4​​≤R≤10​7​​.

Input Format

Contains l + 3l+3 lines.

Line 11: ll ----------------- the number of test cases, ll is an integer.

Line 22: RR ---------------- RR is a an integer followed by a decimal point,then followed by a digit.

Line 33: kk ---------------- test case #11, kk is an integer.

\ldots…

Line i+2i+2: kk ----------------- test case # ii.

\ldots…

Line l +2l+2: kk ------------ test case #ll.

Line l + 3l+3: -1−1 ---------- a constant -1−1 representing the end of the input file.

Output Format

Contains ll lines.

Line 11: kk R_{k}R​k​​ ----------------output for the value of kk and R_{k}R​k​​ at the test case #11, each of which should be separated by a blank.

\ldots…

Line ii: kk R_{k}R​k​​ ----------------output for kk and the value of R_{k}R​k​​ at the test case # ii, each of which should be separated by a blank.

Line ll: kk R_{k}R​k​​ ----------------output for kk and the value ofR_{k}R​k​​ at the test case # ll, each of which should be separated by a blank.

样例输入

1
152973.6
1
-1

样例输出

1 23665

题目来源

2017 ACM-ICPC 亚洲区(南宁赛区)网络赛

思路:

  圆的反演。

  很容易想到把上面两大圆的切点作为反演中心,这样会得到下图。

  绿色的是反演前的圆,黄色的是反演后的图形,两个大圆成了平行直线,下面的大圆成了直线间的小圆,后面添加的圆都在这个小圆的下面。

  所以求出小圆的圆心的y即可,然后反演回去可以得到半径。

 #include <bits/stdc++.h>

 using namespace std;

 #define MP make_pair
#define PB push_back
typedef long long LL;
typedef pair<int,int> PII;
const double eps=1e-;
const double PI=acos(-1.0);
const int K=1e6+;
const int mod=1e9+; int main(void)
{
double r,x,y,ls,dis,ans[];
int t;
cin>>t>>r;
x=0.5*r,ls=-0.5*sqrt(3.0)*r;
dis=x*x+ls*ls;
ls=ls/dis;
r=1.0/(*r);
for(int i=;i<=;i++)
{
y=ls-r*;
ans[i]=0.5*(1.0/(y-r)-1.0/(y+r));
ls=y;
}
for(int i=,k;i<=t;i++)
scanf("%d",&k),printf("%d %d\n",k,(int)ans[k]);
return ;
}

G.Finding the Radius for an Inserted Circle 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛的更多相关文章

  1. 【计算几何】【圆反演】计蒜客17314 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 G. Finding the Radius for an Inserted Circle

    题意:给你三个半径相同的圆,它们切在一起,然后让你往缝里一个一个地塞圆,问你塞到第k个的半径是多少. 就把上面那两个圆的切点当成反演中心,然后会反演成这个样子,两个平行直线和一个圆. 然后就是往那个圆 ...

  2. ACM ICPC 2018 青岛赛区 部分金牌题题解(K,L,I,G)

     目录: K Airdrop I Soldier Game L Sub-cycle Graph G Repair the Artwork ———————————————————— ps:楼主脑残有点严 ...

  3. hdu 4046 2011北京赛区网络赛G 线段树 ***

    还带这么做的,卧槽,15分钟就被A了的题,居然没搞出来 若某位是1,则前两个为wb,这位就是w #include<cstdio> #include<cstring> #defi ...

  4. hdu 4027 2011上海赛区网络赛G 线段树 成段平方根 ***

    不能直接使用成段增减的那种,因为一段和的平方根不等于平方根的和,直接记录是否为1,是1就不需要更新了 #include<cstdio> #include<iostream> # ...

  5. 2017 ACM/ICPC 沈阳 G题 Infinite Fraction Path

    The ant Welly now dedicates himself to urban infrastructure. He came to the kingdom of numbers and s ...

  6. ACM ICPC 2015 Moscow Subregional Russia, Moscow, Dolgoprudny, October, 18, 2015 G. Garden Gathering

    Problem G. Garden Gathering Input file: standard input Output file: standard output Time limit: 3 se ...

  7. 2016ACM/ICPC亚洲区沈阳站 - A/B/C/E/G/H/I - (Undone)

    链接:传送门 A - Thickest Burger - [签到水题] ACM ICPC is launching a thick burger. The thickness (or the heig ...

  8. HDU 4733 G(x) (2013成都网络赛,递推)

    G(x) Time Limit: 2000/500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  9. 计蒜客 30996.Lpl and Energy-saving Lamps-线段树(区间满足条件最靠左的值) (ACM-ICPC 2018 南京赛区网络预赛 G)

    G. Lpl and Energy-saving Lamps 42.07% 1000ms 65536K   During tea-drinking, princess, amongst other t ...

随机推荐

  1. GIS-006-ArcGIS API 空间关系

    Name Description 解释 SPATIAL_REL_CONTAINS Part or all of a feature from feature class 1 is contained ...

  2. Linux系统故障排除

    可能出现的故障: 1,管理员密码忘记 进入单用户模式修改密码 2.系统无法正常启动 a.grub损坏(MBR损坏,grub配置文件丢失) b.系统初始化故障(某文件系统无法正常挂载.驱动不兼容) c. ...

  3. PHP创建文件以及移动文件

    创建文件,这里用到的是fopen,即是打开,又是创建 <?php $counter_file = 'aa.txt ';//文件名及路径,在当前目录下新建aa.txt文件 $fopen = fop ...

  4. springboot---->springboot的使用(一)

    这里我们记录一下springboot的使用,第一次创建环境. springboot的使用 项目结构如下: 一.我们使用maven去构建springboot的依赖.其中我们使用的pom.xml文件内容如 ...

  5. office2010如何使用excel冻结窗格

    当我们在制作一个Excel表格时,如果列数较多,行数也较多时,一旦向下滚屏,则上面的标题行也跟着滚动,在处理数据时往往难以分清各列数据对应的标题,事实上利用"冻结窗格"功能可以很好 ...

  6. Array.prototype.forEach数组遍历

    forEach是Array新方法中最基本的一个,就是遍历,循环.先看以前是怎么遍历数组的 常用遍历 var arr = [1,2,3,4,5]; for(var i = 0; i < arr.l ...

  7. ios 监听设备旋转方向

    -(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { if(fromI ...

  8. Linux操作系统上ADSL拨号上网的方法详解

    1.安装 yum install rp-pppoe.x86_64 2.配置PPPOE客户端软件 安装完软件包后,必须配置pppoe的配置文件/etc/ppp/pppoe.conf,从而让ADSL拨号时 ...

  9. Hive sql语法详解

      Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构 化的数据文件映射为一张数据库表,并提供完整的SQ ...

  10. Jmeter性能测试实践之java请求

     前言 Apache Jmeter是开源.易用的性能测试工具,之前工作中用过几次对http请求进行性能测试,对jmeter的基本操作有一些了解.最近接到开发的对java请求进行性能测试的需求,所以需要 ...