// Programa 3

public class ejemplo03ErlangB3 {

    public static void main(String[] args) {
        // Verificar que se pasan los argumentos correctos
        if (args.length != 2) {
            System.out.println("Uso: java ErlangB3 <a> <k>");
            return;
        }

        try {
            // Parsear los argumentos a y k
            double a = Double.parseDouble(args[0]);
            int k = Integer.parseInt(args[1]);

            // Asegurarse de que los parametros sean validos
            // Parentesis extra en las diferentes comparaciones pueden ser innecesarios pero si no se esta seguro es mejor ponerlos
            if ((a < 0) || (k <= 0)) {
                System.out.printf("Error: a debe ser >= 0 (me has dado %f) y k debe ser > 0 (me has dado %d).\n", a, k);
                return;
            }

            // Calcular la funcion B de Erlang
            double B = 1.0;
            int i = 1;
            while (i <= k) {
                B = (a * B) / (a * B + i);
                i++;
            }

            // Imprimir el resultado con 6 decimales
            System.out.printf("El resultado es: %.6f\n", B);

        } catch (NumberFormatException e) {
            System.out.printf("Error: a debe ser un numero real (me has dado %s) y k debe ser un numero entero (me has dado %s).\n", args[0], args[1]);
        }
    }
}
