其实就是求这个底面积。
我分了三种情况。
一种是正好水平过去在那个角上,也就是说h*L==H*l,答案很显然就是三角形面积
第二种就是往下偏移构成三角形,只需要求出边长即可 面积为(L*h*h)/2*H
第三种就是梯形,求出上底来之后面积即为所求 h*l-(H*l*l)/(2.0*L)
import java.util.*;
import java.math.*;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.io.OutputStreamWriter;
import java.io.BufferedReader;
import java.io.PrintWriter;
public class Main {
public static void main(String args[])throws IOException {
StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
in.nextToken();
long h = (long) in.nval;
in.nextToken();
long l = (long) in.nval;
in.nextToken();
long H = (long) in.nval;
in.nextToken();
long L = (long) in.nval;
in.nextToken();
if(h*L==H*l)
out.print(String.format("%.8f",(l*h)/(2.0)));
else if(h*L<H*l)
out.print(String.format("%.8f",(L*h*h)/(2.0*H)));
else if(h*L>H*l)
out.print(String.format("%.8f",h*l-(H*l*l)/(2.0*L)));
out.flush();
}
} 
京公网安备 11010502036488号