牛客练习赛63-B牛牛的鱼缸

题目描述

牛牛有一个长为l,宽为1,高为h的鱼缸,现在他想要在鱼缸中盛一些水。他想要知道这个鱼缸最多能够放多少水。

当然这个问题太过于简单,所以牛牛将这个鱼缸放到了一个长为L,高为H的斜坡上面,如图所示,鱼缸宽度为1的这条边紧紧靠在斜坡与地面的交界线上

牛客练习赛63-B牛牛的鱼缸_第1张图片

在不允许移动鱼缸与斜坡的情况下。鱼缸最多能够放多少水?

忽略斜坡与鱼缸因为重心的影响而导致整个鱼缸打翻的情况,你可以认为鱼缸是粘在斜坡上面的,而斜坡粘在地面上无法移动。

输入描述:
仅一行,输入四个整数h,l,H,L(1<=h,l,H,L<=10^4 ),表示鱼缸的高度与长度,斜坡的高度与长度。
输出描述:
请输出一个实数,表示鱼缸最多能够放多少水,请输出水的体积。
示例1
输入
复制
1 2 1 2
输出
复制
1.00000000
备注:
你的答案正确,当且仅当你输出的值与答案的相对误差小于10^-6.

有坑,鱼缸的是和地面(也就是看不到的那一面)重合,鱼缸的长l和斜坡的斜边重合。而且要考虑水面是在对角线之下还是之上。

用相似三角形。

#include
using namespace std;
double h,l,H,L;
int main(){
	cin>>h>>l>>H>>L;
	double i=(h*L)/H;
	double h1,s;
	if(i>l){//水超过对角线
		h1=(l*H)/L;
		s=h*l-h1*l/2;
	}
	else
		s=(h*i)/2;
	printf("%.8f",s);
	return 0;
 }

你可能感兴趣的:(牛客练习赛63-B牛牛的鱼缸)