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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值