miércoles, 4 de febrero de 2015

264-Cuenta con Cantor

 Cuenta con Cantor.

Una de las famosas pruebas de la matemática moderna es la demostración de Georg Cantor en la cual
el conjunto de los números racionales es enumerable. La prueba funciona mediante el uso de una
enumeración de los números racionales como se muestra en el siguiente diagrama.

1/1   1/2   1/3   1/4   1/5...
2/1   2/2   2/3   2/4...
3/1   3/2   3/3...
4/1   4/2...
5/1...

En el diagrama anterior, el primer término es 1/1, el segundo término es 1/2, el tercer término es
2/1, el cuarto término es 3/1, el quinto término es 2/2, el sexto término es el 1/3, el séptimo es
1/4 (es una sucesión en zigzag) y así sucesivamente.

Entrada y Salida

Tienes que escribir un programa que lea una lista de números comprendidos entre el 1 y 10^7 y que
imprima con cada número el término correspondiente en la sucesión de Cantor como se indica a continuación.

La entrada del programa tiene que contener un solo número por línea.

Ejemplo de entrada
3
14
7

Ejemplo de salida

El número 3 es 2/1
El número 14 es 2/4
El número 7 es 1/4

Traducción: Roberto Nóvoa González

Enunciado original

453 - Intersecting Circles(La intersección de los círculos)

La ecuación de un círculo con radio r y centrotex2html_wrap_inline29 es


Escriba un programa que compare dos círculos para ver si se cruzan y, si lo hacen, calcular los puntos de intersección. (Puede haber 1, 2, o un número infinito de tales puntos).

Entrada

La entrada a este programa consistirá en un número par de líneas. Cada dos líneas representan un problema de intersección. Cada línea contendrá 3 números reales que constituyen los parámetros tex2html_wrap_inline33 , tex2html_wrap_inline35  y r de un círculo.

Salida

Para cada problema, la salida debe ser las palabras “No hay intersección” si los círculos no tienen intersección.

Cuando tienen un número infinito de puntos de intersección, la salida debe ser las palabras "Los círculos son iguales".

Si hay intersección en 1 o 2 puntos, la salida debe ser una línea con, respectivamente,  uno o dos pares de números reales que dan las coordenadas X e Y de cualquier punto de intersección. Los pares deben ser ordenados primero por su coordenada X, y cuando éstas son iguales por su coordenada Y.

Entrada ejemplo

0.0 0.0 1.0
3.0 0.0 1.0
0.0 0.0 1.0
0.0 0.0 1.0
0.0 0.0 1.0
1.0 0.0 1.0

Salida ejemplo

No hay intersección
Los círculos son iguales
(0.500,-0.866)(0.500,0.866)

Enunciado original:
Fuente


100 - El problema 3n + 1

 El problema 3n + 1 

Trasfondo

Los problemas en ciencias computacionales son siempre clasificados según pertenezcan a ciertas clases de problemas (por ejemplo, NP, Irresolvibles, Recursivos). En este problema tendrás que analizar las propiedades de un algoritmo cuya clasificación no es conocida por todas las posibles entradas.


El Problema

Considerando el siguiente algoritmo:

1.       Entrada n
2.       Imprime n
3.       Si n = 1 entonces PARA
4.       Si n es impar entonces n ß 3n + 1
5.       Si no n ß n/2
6.       Volver al paso 2

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