HDU1071_数学几何

题目大意: 给你三个点p1,p2,p3,p1是最高点,然后算出面积。 解题思路: 我的解题思路有点水,就是直接求抛物线系数,直线系数,最后求积分搞定e.尽量少用中间变量吧。代码有点丑。虽然这道题目是1a,但是还是有点儿毛毛的,就是怕三个点重合在一起,但是好像没有这种情况,测试数据应该还是比较弱吧。哈哈~ 自言自语: 一开始都懒得去用笔化简,但是画出来的时候,真爽,复杂的计算过程都由计算机包了,不过就是怕把公式敲到程序上,不小心就错了。额,刚刚出现了一个这样的问题,所以,做这种题,宁可慢慢来,一定要细心。 代码:
#include
#include
using namespace std;

int main(void)
{
	int n;
	double x1, x2, x3, y1, y2, y3;
	scanf("%d", &n);
	for(int i = 0; i < n; i++)
	{
		scanf("%lf%lf", &x1, &y1);
		scanf("%lf%lf", &x2, &y2);
		scanf("%lf%lf", &x3, &y3);

		double a, b, c, k, b1;
		a = ((x2-x1)*(y3-y2)-(x3-x2)*(y2-y1))
			/ ((pow(x3,2)-pow(x2,2))*(x2-x1)-(pow(x2,2)-pow(x1,2))*(x3-x2));
		b = ((y2 - y1) - a*(pow(x2,2) - pow(x1,2))) / (x2 - x1);
		c = y1 - a*pow(x1,2) - b*x1;
		k = (y3-y2) / (x3-x2);
		b1 = y3 - k*x3;

		//计算面积
		double s;
		s = a/3*(pow(x3,3)-pow(x2,3)) + (b-k)/2*(pow(x3,2)-pow(x2,2)) + (c-b1)*(x3-x2);
		printf("%.2lf\n", s);
	}
	return 0;
}


原文地址:https://www.cnblogs.com/cchun/p/2520218.html