🍑 OJ专栏
输入
2
5.000000 5.000000
0.000000 0.000000
10.000000 0.000000
10.000000 10.000000
1.000000 1.000000
14.000000 8.222222
输出
33.33
40.69
🍑 顶点式抛物线方程
🍑 积分方程求面积
🍤 抛物线 - 直线:a(x-b)^2+c - (kx+d) 求积分
🍑 AC
import java.util.Scanner;
public class Main
{
static double a, b, c, d, k;
static double f(double x)
{
return x * x * x * a / 3 - (a * b + k / 2) * x * x + (a * b * b + c - d) * x;
}
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
while (n-- > 0)
{
// 顶点
double x1 = sc.nextDouble();
double y1 = sc.nextDouble();
// 交点
double x2 = sc.nextDouble();
double y2 = sc.nextDouble();
double x3 = sc.nextDouble();
double y3 = sc.nextDouble();
// 直线方程为 y = k*x + d
k = (y3 - y2) / (x3 - x2);
d = y2 - k * x2;
// 抛物线方程为 y = a(x-b)^2 + c 【顶点坐标(b,c)】 (顶点式抛物线方程)
a = (y2 - y1) / (x2 - x1) / (x2 - x1);
b = x1;
c = y1;
System.out.printf("%.2f", f(x3) - f(x2));
System.out.println();
}
}
}
👨🏫 参考大佬题解