首页 > 代码库 > UVa 10573 - Geometry Paradox
UVa 10573 - Geometry Paradox
题目:两个相切的小圆r1,r2,同时外切于一个大圆R,已知两小圆的半径r1、r2,
或者过两小圆的被大圆截取的切线段长度t,求大圆面积减去两小圆面积为多少。
分析:计算几何。由题意可知如下等式:
R = r1 + r2;
t^2 = 4(R^2 - (r2-r1)^2)= 4r1r2;
整理,得:
S = π(R^2 - r1^2 - r2^2)= π 2r1r2 = π t^2 / 8。
说明:貌似没有不成立的数据啊(⊙_⊙)。
#include <iostream> #include <cstdlib> #include <cstdio> #include <cmath> using namespace std; double pi = 2.0*acos(0.0),a,b; char buf[101]; int main() { int n; while (cin >> n) { getchar(); while (n --) { gets(buf); if (sscanf(buf, "%lf%lf", &a,&b) == 1) { if (a >= 0) printf("%.4lf\n",pi*a*a*0.125); else printf("Impossible.\n"); }else { if (a >= 0 && b >= 0) printf("%.4lf\n",pi*a*b*2.0); else printf("Impossible.\n"); } } } return 0; }
S = π(R^2 - r1^2 - r2^2);
UVa 10573 - Geometry Paradox
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。