Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Re:Problem on HouseBoat(1005)

Posted by frkstyc at 2006-06-27 02:16:24
In Reply To:Problem on HouseBoat(1005) Posted by:jasoria at 2006-06-27 02:06:37
I don't understand but the judge really accepts both versions of your codes.

> I Think I Need a Houseboat
> 
> in this problem, I have this solution:
> 
> #include <stdio.h>
> #include <math.h>
> int main()
> {
>   int t,p = 1;
>   scanf("%d",&t);
>   while(p <= t)
>   {
>    double x,y;
>    int i=1;
>    scanf("%lf%lf",&x,&y);
> 
>    double a = (x*x + y*y)*M_PI_2;//please note this line.
> 
>    while(a > i*50)
>    {
>     i++;
>    }
>    printf("Property %d: This property will begin eroding in year %d.\n",p++,i);
>   }
>   printf("END OF OUTPUT.");
>   return 0;
> }
> 
> So, here: double a = (x*x + y*y)*M_PI_2
> 
> Obviously, this line calculates the area of the circle that pass through the point we are analyzing.
> 
> mathematically, if  x*x + y*y = r*r  and  PI*r*r = A
> then PI*(x*x + y*y)=A, right?
> 
> yet the result is not accepted by the judge. Instead, to be accepted, the code must look as follows:
> 
> #include <stdio.h>
> #include <math.h>
> int main()
> {
>   int t,p = 1;
>   scanf("%d",&t);
>   while(p <= t)
>   {
>    double x,y;
>    int i=1;
>    scanf("%lf%lf",&x,&y);
> 
>    double r = sqrt(x*x + y*y);
>    double a = r*r*1.57;
> 
>    while(a > i*50)
>    {
>     i++;
>    }
>    printf("Property %d: This property will begin eroding in year %d.\n",p++,i);
>   }
>   printf("END OF OUTPUT.");
>   return 0;
> }
> 
> 1.57 being PI/2 where PI = 3.14
> 
> Now, the question is, how is it possible that using 3.14 as PI value, and calculating the square root of  a number, and then squaring the result, we can come up with a more accurate result than just making a substitution in a formula and using the arbitrary precision M_PI_2 value provided by the C++ standard?
> 
> I mean, in my understanding, the lesser operations, the more accurate the result will be, wouldn磘?
> I just don磘 see any reason why I should calculate the square root and then square the result to use the number, when I can directly use the number without that precision-losing calculations.
> 
> if anyone agrees with me, please let me know. And more importantly, if anyone disagrees with me, please tell me why am I wrong about this.

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator