鱼缸最大盛水量

有一个长为l,宽为1,高为h的鱼缸,现在他想要在鱼缸中盛一些水。他想要知道这个鱼缸最多能够放多少水。 当然这个问题太过于简单,所以将这个鱼缸放到了一个长为L,高为H的斜坡上面,如图所示,鱼缸宽度为1的这条边紧紧靠在斜坡与地面的交界线上。
在这里插入图片描述
在不允许移动鱼缸与斜坡的情况下。鱼缸最多能够放多少水? 忽略斜坡与鱼缸因为重心的影响而导致整个鱼缸打翻的情况,你可以认为鱼缸是粘在斜坡上面的,而斜坡粘在地面上无法移动。
输入描述:
仅一行,输入四个整数h,l,H,L,(1≤h,l,H,L≤104),表示鱼缸的高度与长度,斜坡的高度与长度。
输出描述:
请输出一个实数,表示鱼缸最多能够放多少水,请输出水的体积。
示例1
输入1 2 1 2
输出
1.00000000
备注:
你的答案正确,当且仅当你输出的值与答案的相对误差小于10-6

#include <iostream>
#include<stdio.h>
#include<cmath>
#define eps 0.0000001 
using namespace std;
int main()
{
 double l,h,L,H=0;
 cin>>h>>l>>H>>L;
 double de1,de2=0;
 de1=atan(H/L);
 de2=atan(h/l);
 if(eps<=de1-de2&&de1-de2<=eps)
 {
  printf("%.8f",0.5*h*l);
 }
 else if(de1-de2>eps)
 {
  printf("%.8f",0.5*h*h*(L/H));
 }
 else if(de1-de2<-eps)
 {
  printf("%.8f",(h-l*(H/L))*l+0.5*l*l*(H/L));
 }
}
原创文章 326 获赞 309 访问量 3万+

猜你喜欢

转载自blog.csdn.net/huangziguang/article/details/106006921