1 solutions
-
0
这个题目要我们找到经过两个圆的最小距离之和,首先得理解清楚题意,只要经过了那个圆的范 围,那么就算通过了这个圆,根据题目给出的样例,大家自己画个图(因为我懒所以就不画了),路线应该是这样的,首先通过圆心在第一象限的圆的正下方(正对圆心的下方的那个圆的边界点),然后我们需要求此时到另一个圆的最小距离,那么就是把我们找到的第一个点和第二个圆心相连,然后只需要减去一个R就能得到样例给出的数据,可是实际上并不这么简单,因为如果当第一个圆与x轴相交时,算法就不一样的,路径应该是直接从原点开始沿x轴直接到达圆心位于x轴上圆的最左边的点,那么计算的方法应该就是
下面直接上代码:
#include<stdio.h> #include<math.h> int main() { int t; scanf("%d",&t); while(t--) { double a,b,r; scanf("%lf%lf%lf",&a,&b,&r); double s3; if(b-r>0) { double s1=sqrt(a*a+(b-r)*(b-r)); s3=2*s1-r;//这是第一种情况时的计算方法 } else s3=2*a-r; printf("%.2lf\n",s3); } return 0; }
- 1
Information
- ID
- 132
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 9
- Tags
- # Submissions
- 137
- Accepted
- 12
- Uploaded By