首页 > 代码库 > C. 圆圈圈
C. 圆圈圈
有两个圆圈圈,如图所示,要把它们放在矩形里,必须让两个圈圈的底部和矩形的底部相切,求矩形的最短宽度D
Input
输入文件有多行,每行两个整数,格式如下
R1 R2
R1,R2是两个圈圈的半径,0<R1,R2<=100
R1=0,R2=0时输入结束
Output
对应于输入的每一组数据,用单独的一行输出D的最小值,保留到两位小数。
Sample Input
3 3 0 0
Sample Output
12.00
解题思路:
如上图所示,分两种情况。
代码如下:
/*两种情况,1:两圆相差不大,两圆与底部相切的同时又分别与两边相切 2:两圆圈中一个特别的大,其直径就是最短宽度D,另一个圆则在它与边 形成的空隙中*/ #include<stdio.h> #include<math.h> int main() { int r1,r2,max; double D; while(scanf("%d%d",&r1,&r2)) { if(r1==0&&r2==0) break; max=r1>r2?r1:r2; D=sqrt((r1+r2)*(r1+r2)-(r1-r2)*(r1-r2)); if(r1+r2+D<2.0*max) { printf("%.2lf\n",2.0*max); } else { printf("%.2lf\n",r1+r2+D); } } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。