原题:http://acm.hdu.edu.cn/showproblem.php?pid=2876
Ellipse, again and again
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 560 Accepted Submission(s): 209
Problem Description
There is an ellipse in the plane, its formula is
. We denote the focuses by F1 and F2. There is a point P in the plane. Draw a segment to associate the origin and P, which intersect the ellipse at point Q. Then draw a tangent of the ellipse which passes Q. Denote the distance from the center of the ellipse to the tangent by d. Calculate the value of
.
![](https://i-blog.csdnimg.cn/blog_migrate/7882d7ca4f16a2815ae70e2c970bbef4.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/b3876098203c44722a6c349fe38df532.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/7a1dcd1225794ad8ad0c8187af7e6196.jpeg)
Input
The first line contains a positive integer n that indicates number of test cases.
And each test case contains a line with four integers. The value of parameters of the ellipse a, b(0<|a|,|b|<=100),and the coordinates x, y of P(|x|<=100,|y|<=100) are given successively.
And each test case contains a line with four integers. The value of parameters of the ellipse a, b(0<|a|,|b|<=100),and the coordinates x, y of P(|x|<=100,|y|<=100) are given successively.
Output
For each test case, output one line. If the given point P lies inside the given ellipse, print "In ellipse" otherwise print the value of d*d*QF1*QF2 rounded to the nearest integer.
Sample Input
1 1 1 1 1
Sample Output
1
AC代码:
#include <stdio.h>
/*
author:Yangsir
time:2014/5/10
*/
int main()
{
int n;
double a,b,x,y,m;
scanf("%d",&n);
while(n--)
{
scanf("%lf%lf%lf%lf",&a,&b,&x,&y);
m=a*a*b*b;
if(x*x/a/a+y*y/b/b<1)
printf("In ellipse\n");
else
printf("%.0lf\n",m);
}
return 0;
}