Sunday, September 25, 2011

Solución al problema 2008 - Bouncy Balls de la ACM-ICPC en Java

El enunciado del problema esta en este enlace
Problema 2008
Solución

import java.util.Scanner;

/**
 * 2008 - Bouncy Balls [ACM-ICPC]
 *
 * @author BreakDark
 * @version 1.0 beta
 */
// ACEPTADO!!! xD
public class Main {
    public static void main(String[] args) {
        Scanner Lee; // para leer los datos de entrada
        int radio;
        short maxDistancia; // maxima distancia que puede viajar la bala
        short grados; // el grado en que se lanzara la bala
        int test; // para el numero de test evaluados
        double disRebote; // distancia promedio recorrida antes de rebotar

        // EL PROGRAMA INICIA AQUI
        Lee = new Scanner(System.in);
        radio = Lee.nextInt();
        test = 1;
        while(radio != 0){
            System.out.println("Test Rig " + test);
            maxDistancia = Lee.nextShort();
            grados = Lee.nextShort();
            while(maxDistancia != 0 || grados != 0){
                // aqui se hace el calculo
                disRebote = 2 * radio * Math.cos((90 - grados) * Math.PI / 180);
                maxDistancia /= disRebote;
                System.out.println(maxDistancia);
                maxDistancia = Lee.nextShort();
                grados = Lee.nextShort();
            }
            radio = Lee.nextInt();
            if(radio != 0)
                System.out.println(); // linea en blanco
            test++;
        }
    }
}