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

题目描述

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

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

在这里插入图片描述

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

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

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

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

用相似三角形。

#include<bits/stdc++.h>
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;
 }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值