其实就是求这个底面积。 
   我分了三种情况。 
   一种是正好水平过去在那个角上,也就是说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号
京公网安备 11010502036488号