2014年6月20日 星期五

UVa 11715 - Car

Problem link

Keyword: physics - movement

Algorithm:

The algorithm is quite naive. We just need to use
  1. V0 + a*t = VE
  2. VE^2 = V0^2 + 2*a*s

By these 2 formulae, we can solve what was required easily.

Code:
#include<cstdio>
#include<cmath>

int main()
{
    int T = 0, Case;
    double u, v, t, a, s;

    while( scanf( "%d", &Case ) && Case )
    {
        if( Case == 1 )
        {
            scanf( "%lf %lf %lf", &u, &v, &t );
            printf( "Case %d: %.3f %.3f\n", ++T, ( u+v ) * t / 2,( v-u ) / t );
        }
        else if( Case == 2 )
        {
            scanf( "%lf %lf %lf", &u, &v, &a );
            printf( "Case %d: %.3f %.3f\n", ++T, ( u+v ) * ( v-u ) / a / 2, ( v-u ) / a );
        }
        else if( Case == 3 )
        {
            scanf( "%lf %lf %lf", &u, &a, &s );
            printf( "Case %d: %.3f %.3f\n", ++T, sqrt( u*u + 2*a*s ), ( sqrt( u*u + 2*a*s )-u ) / a );
        }
        else
        {
            scanf( "%lf %lf %lf", &v, &a, &s );
            printf( "Case %d: %.3f %.3f\n", ++T, sqrt( v*v - 2*a*s ), ( v-sqrt( v*v - 2*a*s ) ) / a );
        }
    }
}

沒有留言:

張貼留言