NBUT-2014暑期集训专题练习1 -> 二分法 A题
2014-08-05 10:42
417 查看
DescriptionIgnatius 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.
InputThe 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 order of P1, P2, P3. Each point is described by two floating-point numbers X and Y(0.0<=X,Y<=1000.0).
OutputFor each test case, you should output the area of the land, the result should be rounded to 2 decimal places.
Sample Input
就是个数学题,给你三个点,然后求出抛物线和直线的参数,之后积分这里要注意下,抛物线的系数a是不可为0的,还有这题不用考虑直线斜率无穷的情况下面的是代码
Note: The point P1 in the picture is the vertex of the parabola.
InputThe 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 order of P1, P2, P3. Each point is described by two floating-point numbers X and Y(0.0<=X,Y<=1000.0).
OutputFor each test case, you should output the area of the land, the result should be rounded to 2 decimal places.
Sample Input
2 5.000000 5.000000 0.000000 0.000000 10.000000 0.000000 10.000000 10.000000 1.000000 1.000000 14.000000 8.222222Sample Output
33.33 40.69
就是个数学题,给你三个点,然后求出抛物线和直线的参数,之后积分这里要注意下,抛物线的系数a是不可为0的,还有这题不用考虑直线斜率无穷的情况下面的是代码
#include<stdio.h> #include<string.h> double x1,y1,x2,y2,x3,y3; int main() { int t; while(~scanf("%d",&t)) { while(t--) { scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3); double a,b,c,k,t; k=(y3-y2)/(x3-x2); t=(x3*y2-x2*y3)/(x3-x2); if(y3!=y2) a=(y3-y2)/((x3*x3-x2*x2)+2*x1*(x2-x3)); else a=(y2-y1)/((x1-x2)*(x1-x2)); b=-2*a*x1; c=y2-a*x2*x2+2*a*x1*x2; double area=(a*x3*x3*x3/3)-(a*x2*x2*x2/3)+((b-k)*x3*x3/2)-((b-k)*x2*x2/2)+(c-t)*(x3-x2); printf("%.2f\n",area); } } return 0; }
相关文章推荐
- NBUT-2014暑期集训专题练习1 -> 二分法 N - N
- NBUT-2014暑期集训专题练习1 -> 二分法B - B
- NBUT-2014暑期集训专题练习1 -> 二分法 J - J
- NBUT-2014暑期集训专题练习1 -> 二分法E - E
- NBUT-2014暑期集训专题练习1 -> 二分法F - F
- NBUT-2014暑期集训专题练习1 -> 二分法 H - H
- NBUT-2014暑期集训专题练习1 -> 二分法L - L
- 黑马程序员->集合类 (3 代码练习
- Java 基础一些代码练习笔记( GenericFoo<T> 泛型)
- 2013 -> 2014
- 黑马程序员------<补>String 综合练习
- 黑马程序员_<<TCP练习>>
- 黑马程序员_<<String练习>>
- 2014蓝桥杯本科C/C++组预赛第9题<斐波那契>解题报告
- 2014 UESTC暑前集训图论专题解题报告
- 【笔记】2014-01<—>2014-02
- spark 官方动手练习二:用spark浏览维基百科的数据<转>
- 2010暑期集训第二专题(搜索)关于搜索的一点两点三点...
- [直播]2014 PKU ACM暑期集训
- 暑期实训第二课(Arduino上的环境数据采集终端制作<传感器的选择>)