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.Bkjia.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;
}