给定二次曲线上三个点,求这三个点和曲线构成部分的面积。可能我的想法比较麻烦,因为交完1500多B,然后看榜前面都是200多B。
思路:根据克莱默法则求出二次曲线系数a,b,c,然后求一个积分值。注意一点就是c++中控制格式输出是头文件<iomanip>。然后设置位数是setw(),设置小数点位数是setprecision()。代码如下:
// hdu1071.cpp : 定义控制台应用程序的入口点。
// Accepted
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <cmath>
#include <vector>
using namespace std;
//3*3行列式
double det(const vector<vector<double> > &v)
{
double ans;
ans = v[0][0] * v[1][1] * v[2][2] + v[1][0] * v[2][1] * v[0][2] + v[0][1] * v[1][2] * v[2][0] -
v[0][2] * v[1][1] * v[2][0] - v[0][1] * v[1][0] * v[2][2] - v[1][2] * v[2][1] * v[0][0];
return ans;
}
//求积分值
double area_solve(double a, double b, double c, double x2, double y2,double x3,double y3)
{
double trapezium_area = (fabs(y2) + fabs(y3)) / 2.0*fabs(x2 - x3); //梯形面积
double