题目描述
牛牛有一个长为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;
}