hdu1071The area

用到求抛物线系数公式,直线系数公式,再用简单积分来求面积。

注意:

做这类精度题目要小心

计算公式时能不用中间变量就不用,

虽然代码会明显增长,可是可以提高精度

在做这道题目时,我就花了很多时间在公式的优化上。

源代码如下:

#include<stdio.h>
int main()
{
 double p1x,p2x,p3x,p1y,p2y,p3y;
 double a,b,c,k,m,result,x;
 int t;
 scanf("%d",&t);
 while(t--)
 {
  scanf("%lf%lf",&p1x,&p1y);
  scanf("%lf%lf",&p2x,&p2y);
  scanf("%lf%lf",&p3x,&p3y);
  a=(p2y-p1y)/((p2x-p1x)*(p2x-p1x));
  b=-2*p1x*(p2y-p1y)/((p2x-p1x)*(p2x-p1x));
  c=p1y-p1x*p1x*(p2y-p1y)/((p2x-p1x)*(p2x-p1x))+2*p1x*p1x*(p2y-p1y)/((p2x-p1x)*(p2x-p1x));
  k=(p3y-p2y)/(p3x-p2x);
  m=p3y-p3x*(p3y-p2y)/(p3x-p2x);
  x=p3x-p2x;
  result=a*p3x*p3x*p3x/3+0.5*(b-k)*p3x*p3x+(c-m)*p3x-a*p2x*p2x*p2x/3-0.5*(b-k)*p2x*p2x-(c-m)*p2x;
  printf("%.2lf\n",result);
 }

}

原文地址:https://www.cnblogs.com/pandy/p/1318400.html