TZOJ--3939: FIFA World Cup 2006(几何公式)

3939: FIFA World Cup 2006 

时间限制(普通/Java):1000MS/3000MS     内存限制:65536KByte

描述

Football is one of the most popular words in 2006.

Bob cannot go to Germany for the FIFA world cup 2006 and can only watch the TV instead.

As the following figure, height of the TV is L, and TV is placed at H above Bob's eyes, shown in Figure.

Bob want to maximaze the angle α. You need to tell Bob x, the distance between the TV and Bob's eyes, when the angle α is maximum.

Attention please, x>=D (or TV will do harm to Bob).

输入

The first line of the input is a positive integer T. T is number of the test cases followed.

Each test case contains three integers L, H, D (-1000<H<1000, 0<L, D< 1000).

There may be one or several spaces before or after the integer.

输出

The output of the program should consist of one line of output for each test case.

The output of each test case only contains x rounded to two decimal places past the decimal point, and always showing the two decimal places past the decimal point.

No any redundant spaces is needed.

样例输入

3
2 -1 10
1 1 1
1 -2 1

样例输出

10.00
1.41
1.41

题目来源

TOJ

 

题目链接:http://tzcoder.cn/acmhome/problemdetail.do?&method=showdetail&id=3939

题目大意:Bob想要最大的角度观看世界杯,求出这时候的x值。

题目已经画好了两种情况的图片,根据这两种情况分类讨论。

第二种情况,若H小于L时,那么X越大角度就会越小,所以这时候的X就是题目要求的最小值D

若H大于L是就和第一种情况一样。

第一种情况,x=sqrt(h*H+H*L)是取最小值,证明过程如下:

 

至于为什么是这个点是极小值,其实感觉一下点越远角度越小,越近角度也越小,所以是一个中间值是角度的最大值,f(x)的极小值,这个不做证明了,下图给出f(x)的大致图像

 

Update:感谢队友赞助的解法,证明过程如下:

 

emmm,我几何全忘了,有简单方法证明可以联系我,告诉我一下,本人不擅长向量法。

 

#include<stdio.h>
#include<math.h>
int main()
{
	double l,h,d,p;
	int n;
	scanf("%d",&n);
	while(n--)
	{
		scanf("%lf %lf %lf",&l,&h,&d);
		if(-h<=l&&h<0)p=d;
		else p=sqrt(l*h+h*h);
		if(p<d)p=d;
		printf("%.2lf\n",p);
	}
	return 0;
}

  

转载于:https://www.cnblogs.com/Anidlebrain/p/10055997.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值