HDU 1071 The area (数学水题)

2014-11-24 11:46:25 · 作者: · 浏览: 1

The area

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 7088 Accepted Submission(s): 4975


Problem Description Ignatius bought a land last week, but he didn't know the area of the land because the land is enclosed by a parabola and a straight line. The picture below shows the area. Now given all the intersectant points shows in the picture, can you tell Ignatius the area of the land

Note: The point P1 in the picture is the vertex of the parabola.

\


Input The input contains several test cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow.
Each test case contains three intersectant points which shows in the picture, they are given in the Z http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcmRlciBvZiBQMSwgUDIsIFAzLiBFYWNoIHBvaW50IGlzIGRlc2NyaWJlZCBieSB0d28gZmxvYXRpbmctcG9pbnQgbnVtYmVycyBYIGFuZCBZKDAuMDw9WCxZPD0xMDAwLjApLjxicj4KCgogCjxicj4KCk91dHB1dAoKRm9yIGVhY2ggdGVzdCBjYXNlLCB5b3Ugc2hvdWxkIG91dHB1dCB0aGUgYXJlYSBvZiB0aGUgbGFuZCwgdGhlIHJlc3VsdCBzaG91bGQgYmUgcm91bmRlZCB0byAyIGRlY2ltYWwgcGxhY2VzLjxicj4KCgogCjxicj4KClNhbXBsZSBJbnB1dAoKPHByZSBjbGFzcz0="brush:java;">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
Sample Output
33.33
40.69


题意:就是告诉图中三点坐标,求面积。


#include 
  
   
#include 
   
     #include 
    
      #include 
     
       #include 
      
        typedef struct Point{ double x,y; }Point; double a,b,c,k,d,s; Point p[4]; double gao(double x){ return (a/3.0*pow(x,3.0)+b/2.0*pow(x,2.0)+c*x-k/2*pow(x,2.0)-d*x); } int main(){ //freopen("in.txt","r",stdin); int t,i; scanf("%d",&t); while(t--){ for(i=1;i<=3;++i){ scanf("%lf %lf",&p[i].x,&p[i].y); } a = (p[1].y-p[2].y)/(2*p[1].x*p[2].x-pow(p[2].x,2.0)-pow(p[1].x,2.0)); b = -2*a*p[1].x; c = p[2].y+2*a*p[1].x*p[2].x-a*pow(p[2].x,2.0); k = (p[3].y-p[2].y)/(p[3].x-p[2].x); d = p[2].y-k*p[2].x; s = gao(p[3].x)-gao(p[2].x); printf("%0.2lf\n",s); } return 0; }