sábado, 31 de enero de 2015

solucion 11777 Automatizar los grados

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package programame1;

import java.util.Scanner;

/**
 *
 * @author Santi
 */
public class UVA11777_AutomatizarGrados {

    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        int cant;
        int num1, num2, num3, num4, num5, num6, num7;
        cant = entrada.nextInt();
        for (int i = 1; i <= cant; i++) {
            num1 = entrada.nextInt();
            num2 = entrada.nextInt();
            num3 = entrada.nextInt();
            num4 = entrada.nextInt();
            num5 = entrada.nextInt();
            num6 = entrada.nextInt();
            num7 = entrada.nextInt();
            mostrarNota(i, calculaNota(num1, num2, num3, num4, num5, num6, num7));
        }
    }

    static int calculaNota(int num1, int num2, int num3, int num4, int num5, int num6, int num7) {
        int nota;
        int media = 0;
        nota = num1 + num2 + num3 + num4;
        if (num5 >= num6 || num5 >= num7) {
            media += num5;
        }
        if (num6 >= num5 || num6 >= num7) {
            media += num6;
        }
        if (num7 > num5 || num7 > num6) {
            media += num7;
        }
        nota += media / 2;
        return nota;
    }

    static void mostrarNota(int caso, int nota) {
        char calificacion;
        if (nota >= 90) {
            calificacion = 'A';
        } else if (nota >= 80) {
            calificacion = 'B';
        } else if (nota >= 70) {
            calificacion = 'C';
        } else if (nota >= 60) {
            calificacion = 'D';
        } else {
            calificacion = 'F';
        }
        System.out.println("Case " + caso + ": " + calificacion);
    }
}

enunciado 11777 automatizar los grados

11777 Automatizar los Grados
Los profesores de una escuela ubicada en la región occidental de Sylhet, sigue actualmente un sistema manual de clasificación de sus estudiantes. El proceso manual es muy lento y propenso a errores. Desde el próximo semestre que han decidido comprar algunas computadoras para que todo el proceso de clasificación pueden ser automatizadas. Y sí, lo has adivinado - que le han contratado para escribir un programa que hará el trabajo. La clasificación de cada curso se basa en la siguiente escala ponderada:
• Plazo 1 - 20%
• Plazo 2-20%
• Final - 30%
• Asistencia - 10%
• Clase - Pruebas de 20%
Las calificaciones con letras se hacen según la puntuación total obtenida por un estudiante y se muestra a continuación:
• A = 90%
• B = 80% y <90%
• C = 70% y <80%
• D = 60% y <70%
• F <60%
Plazo 1 y Plazo 2 son exámenes de 20 cada uno como nota maxima, Final es de 30 y Asistencia es de 10. Se hacen 3 pruebas por semestre con sus respectivas notas, la media de las 2 mejores se valoran con hasta 20 puntos.
Ejemplo: Di Tara obtuvo notas de 15, 18, 25 y 8 en el Trimestre 1, Trimestre 2, final y Asistencia
respectivamente. Sus marcas de la prueba 3 de clase son 15, 12 y 17. Desde será contado promedio de sus 2 mejores , su marca de prueba clase será igual a (15 + 17) / 2 = 16. Por lo tanto, las marcas totales = 15 + 18 + 25 + 8 + 16 = 82 y ella va a obtener una B.

entrada
La primera línea de entrada es un número entero T (T <100) que indica el número de casos de prueba. Cada caja contiene 7 enteros en una línea en el orden:
  • trimestre 1
  • trimestre 2
  • Final
  • Asistencia
  • test1
  • test2
  • test3
Todos estos enteros estarán en el rango [0, puntuación total posible para el ensayo].

salida
Para cada caso, la salida el número de caso primero seguido de la letra de grado {ABCDF}.

Ejemplo de entrada
3
15 18 25 8 15 17 12
20 20 30 10 20 20 20
20 20 30 10 18 0 0

Ejemplo de salida
Caso 1: B
Caso 2: A

Caso 3: B


solucion 11727 Recortes

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package programame1;

import java.util.Scanner;

/**
 *
 * @author Santi
 */
public class UVA11727_Recortes {

    public static void main(String[] args) {

        Scanner entrada = new Scanner(System.in);
        int num1, num2, num3;
        int cant = entrada.nextInt();
        for (int i = 1; i <= cant; i++) {
            num1 = entrada.nextInt();
            num2 = entrada.nextInt();
            num3 = entrada.nextInt();
            System.out.println("Case " + i + ": " + numeroMedio(num1, num2, num3));
        }
    }

    static int numeroMedio(int a, int b, int c) {
        int max, min;
        max = Math.max(a, b);
        max = Math.max(max, c);
        min = Math.min(a, b);
        min = Math.min(c, min);
        if (a != max && a != min) {
            return a;
        } else if (b != max && b != min) {
            return b;
        } else {
            return c;
        }
    }
}

Enunciado 11727 Recortes

La Empresa XYZ se ha visto muy afectada por la recesión y está teniendo una gran cantidad de medidas de reducción de costes. Algunas de estas medidas incluyen renunciar a espacio de oficinas, pasando de código abierto, lo que reduce los incentivos, recortando en lujos y la emisión de cartas de despido.
Tienen tres (3) empleados que trabajan en el departamento de contabilidad y se va a despedir a dos (2) de ellos. Después de una serie de reuniones, que han decidido desalojar a la persona que recibe la mayor sueldo y el que obtenga el menor. Esta suele ser la tendencia general durante crisis como esta
Se le dará los salarios de estos 3 empleados que trabajan en el departamento de contabilidad. Usted tiene que averiguar el sueldo de la persona que sobrevive.
entrada
La primera línea de entrada es un número entero T (T <20) que indica el número de casos de prueba. Cada caso consiste en una línea con 3 números enteros positivos distintos. Estos 3 enteros representan los sueldos de los tres empleados. Todos estos serán números enteros en el rango [1000, 10000]
salida
Para cada caso, la salida el número de caso seguido por el sueldo de la persona que sobrevive.
Ejemplo de entrada
  3
  1000 2000 3000
  3000 2500 1500
1500 1200 1800
  Ejemplo de salida
  Caso 1: 2000
Caso 2: 2500

  Caso 3: 1500

jueves, 22 de enero de 2015

136 Numeros feos

Los números feos son números cuyos únicos divisores primos son 2, 3 ó 5. La secuencia
1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, ...
muestra los primeros 11 números feos. Por convención, 1 incluido.

Escriba un programa para encontrar e imprimir el número feo 1500'th.
Entrada y Salida
No hay ninguna entrada para este programa. La salida debe constar de una sola línea como se muestra a continuación, con <número> reemplazado por el número calculado.
Ejemplo de salida
El número feo 1500'th es <número>.


Traducido por Santiago

solucion UVA 136 Numeros Feos

package UVA;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author dam116
 */
public class UVA136_UglyNumber {
//El tiempo del calculo de este ejercicio es demasiado largo pero se puede simplificar a esto:

    public static void main(String[] args) {
        System.out.println("The 1500'th ugly number is 859963392.");
        mostrarNumeros(1500);
    }

//Esta seria la forma de calcularlo

    static void mostrarNumeros(int fin) {
        int num = 1, cant = 0;
        System.out.print("1, ");
        while (cant < fin) {
            if (comprobarNumFeo(num)) {
                System.out.print(num + ", ");
                cant++;
            }
            num++;
        }
    }

    static boolean comprobarNumFeo(int num) {
        if (!(num % 2 == 0 || num % 3 == 0 || num % 5 == 0)) {
            return false;
        }
        for (int i = 4; i < num; i++) {
            if (esPrimo(i)) {
                if (i != 5) {
                    if (num % i == 0) {
                        return false;
                    }
                }
            }
        }
        return true;
    }

    static boolean esPrimo(int num) {
        for (int i = 2; i < num; i++) {
            if (num % i == 0) {
                return false;
            }
        }
        return true;
    }
}

miércoles, 21 de enero de 2015

Solución 10019 Metodo de encriptación invertida

import java.util.Scanner;

/**
 *
 * @author dam101
 */
public class metodoencriptacion10019 {

    public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        int numero, cant, num, cont1, cont2;
        int[] hex = {0, 1, 1, 2, 1, 2, 2, 3, 1, 2};
/*este array esla cantidad de unos en los 10 primeros numeros de la conversion de hexadecimal a binario.*/
        cant = leer.nextInt();
        for (int i = 0; i < cant; i++) {
            numero = leer.nextInt();
            num = numero;
            cont1 = 0;
            cont2 = 0;
            while (num >= 1) {
                if (num % 2 == 1) {
                    cont1++;
                }
                num /= 2;
            }
            String cadena = Integer.toString(numero);
            for (int j = 0; j < cadena.length(); j++) {
                cont2 += hex[Character.getNumericValue(cadena.charAt(j))];
            }
        System.out.println(cont1+" "+cont2);
        }
    }
}

SOLUCIONADO : Amanda y Santiago