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

Solucion 1585

import java.util.Scanner;
/**
 *
 * @author dam123
 */
public class Uva1585 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        int casos, puntos, total;
        String cadena;

        //System.out.println("Introduzca numero de casos");
        casos = leer.nextInt();
        leer.nextLine();
        for (int i = 0; i < casos; i++) {
            cadena = leer.nextLine();
            puntos=total=0;
            for (int j = 0; j < cadena.length(); j++) {
                if (cadena.charAt(j) == 'O') {
                    puntos++;
                    total += puntos;
                } else /*if (cadena.charAt(j) == 'X')*/ {
                    puntos = 0;
                }
            }
            System.out.println(total);
        }

    }
   
}

1585-SCORE

import java.util.Scanner;

/**
 *
 * @author dam114
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        int cont = 0, resultado = 0, lectura, cont2 = 0;
        String cadena;
        Scanner leer = new Scanner(System.in);
        lectura = leer.nextInt();
        leer.nextLine();
        do {
            cadena = leer.nextLine();
            cont2++;
            for (int i = 0; i < cadena.length(); i++) {
                if (cadena.charAt(i) == 'O') {
                    cont++;
                    resultado = cont + resultado;

                } else {
                    cont = 0;

                }
            }
            System.out.println(resultado);
            resultado = 0;
            cont = 0;
        } while (cont2 != lectura);

    }
}

Solucionado por Valeiras

Referencia: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4460

Solución UVA 1585 Score

package uva1585;
import java.util.Scanner;
/**
 *
 * @author dam129
 */
public class Uva1585 {

    /**
     * @param args the command line arguments
     */

Solución UVA 686 Goldbach's Conjecture (II)


import java.util.Scanner;

/**
 *
 * @author DAM112
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int[] anArray;
        int [] aArray;
        aArray = new int[32678];

        int num, cont, cont1, raiz, cont2 , cont3 , cont4=0, cont5=0;
        boolean primo;
       
        Scanner leer = new Scanner(System.in);
       
       
        do {
           
            num = leer.nextInt();
            if (num != 0) {
                aArray[cont4] = num;
                cont4++;
            }
           
        } while (num != 0);
       
        do {
            cont1=0;
            cont2=0;
            cont3 = 0;
            for (int i = 1; i < aArray[cont5]; i++) {
                primo = true;
                cont = 2;
                raiz = (int) Math.sqrt(i);
                while (primo && (cont <= raiz)) {
                    if (i % cont == 0) {
                        primo = false;
                    } else {
                        ++cont;
                    }
                }
               
                if (primo == true) {
                    cont2 = cont2 + 1;
                }
            }
           
            anArray = new int[cont2];
           
            for (int i = 1; i < aArray[cont5]; i++) {
               
                primo = true;
                cont = 2;
                raiz = (int) Math.sqrt(i);
                while (primo && (cont <= raiz)) {
                    if (i % cont == 0) {
                        primo = false;
                    } else {
                        ++cont;
                    }
                }
               
                if (primo == true) {
                   
                    anArray[cont3] = i;
                    cont3++;
                }
            }
           
            for (int i = 1; i < anArray.length; i++) {
                for (int j = 1; j < anArray.length; j++) {
                    if (anArray[i] + anArray[j] == aArray[cont5]) {
                        if (anArray[i] == anArray[j]) {
                        cont1++;

                    }
                        cont1++;
                       
                    }
                   
                }
               
            }
            System.out.println("" + cont1 / 2);
            cont5++;
        } while (cont5 != cont4);
       
    }
   
}

Solución UVA Tex Quotes

package TEX_Quotes_272;

import java.util.Scanner;

public class TEX_Quotes_272 {

    public static void main(String[] args) {
        String cadena;
        Scanner leer = new Scanner(System.in);
        int cont = 1;

        do {

            cadena = leer.nextLine();

            for (int i = 0; i < cadena.length(); i++) {
                if (cadena.charAt(i) == '"') {
                    if (cont % 2 != 0) {
                        System.out.print("``");
                    } else {
                        System.out.print("''");
                    }
                    cont++;
                } else {

                    System.out.print(cadena.charAt(i));
                }
            }
            System.out.println();
        } while (leer.hasNext());
    }
}

Solución UVA 1585 Score


package Puntuacion_1585;

import java.util.Scanner;

public class Puntuacion_1585 {

    public static void main(String[] args) {
        int num;
        String respuesta;
        boolean spree = true;
        int conteo;
        int puntaje;

        Scanner leer = new Scanner(System.in);

        num = leer.nextInt();
        leer.nextLine();
        for (int i = 0; i < num; i++) {

            respuesta = leer.nextLine();

            puntaje = 0;
            conteo = 0;

            for (int j = 0; j < respuesta.length(); j++) {
                if (!spree) {
                    conteo = 0;

                }
                if (respuesta.charAt(j) == 'O') {
                    conteo = conteo + 1;
                    puntaje = puntaje + conteo;
                    spree = true;
                } else {
                    spree = false;
                }
            }
         
            System.out.println(puntaje);
        }
    }
}

Solucion 1585


Solución UVA 1585

/*
 * 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 pkg1585uva;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        int suma = 0, sumatotal = 0, casos, cont = 0;
        String cadena;
        System.out.println("Introduce los numeros de casos");
        casos = entrada.nextInt();
        do {

            cadena = entrada.next();
            cont++;
            for (int i = 0; i < cadena.length(); i++) {
                if (cadena.charAt(i) == 'O') {
                    suma++;
                    sumatotal = sumatotal + suma;
                } else if (cadena.charAt(i) == 'X') {
                    suma = 0;

                }
            }
            System.out.println(sumatotal);
            sumatotal = 0;

        } while (casos != cont);

    }

}

Solucionado por Jesús
Enlace de referencia: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4460

Solución UVA 1585 Score

import java.util.Scanner;
/**
 *
 * @author juan
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        int total;
        int parcial;
        int casos;
        String caso;
       
        casos= leer.nextInt();
        leer.nextLine();
        for (int i = 0; i < casos; i++) {
            caso=leer.nextLine();
            total=parcial=0;
            for (int j = 0; j < caso.length(); j++) {
                if (caso.charAt(j)=='O')
                {
                    parcial++;
                    total+=parcial;
                }
                else parcial=0;
               
            }
            System.out.println(total);
        }
       
       
       
   
    }
   
}

Solucion uva 737

/*
 * 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 uva737;
import java.util.Scanner;

/**
 *
 * @author Juan
 */
public class Uva737 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        int vol,cubos,lado,x,y,z,inx,iny,
inz,finx,finy,finz;
       
           
         cubos=leer.nextInt();
         while (cubos>0){
             inx=leer.nextInt();
             iny=leer.nextInt();
             inz=leer.nextInt();
             lado=leer.nextInt();
             finx=inx+lado;
             finy=iny+lado;
             finz=inz+lado;
             for (int i = 1; i < cubos; i++) {
                 x=leer.nextInt();
                 y=leer.nextInt();
                 z=leer.nextInt();
                 lado=leer.nextInt();
                 inx=Math.max(inx, x);
                 iny=Math.max(iny, y);
                 inz=Math.max(inz, z);
                 finx=Math.min(finx, x+lado);
                 finy=Math.min(finy, y+lado);
                 finz=Math.min(finz, z+lado);
                
             }
             vol=Math.max(0, (finx-inx)*(finy-iny)*(finz-inz));
             System.out.println(vol);
            
             cubos = leer.nextInt();
         }
    }
}
http://solucionesuva.blogspot.com.es/2015/01/737-gleaming-cubes.html

Solucion 1585 Puntuacion

/*
 * 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 UVA;

import java.util.Scanner;

/**
 *
 * @author dam116
 */
public class UVA1585_Puntuacion {

    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        String cadena;
        int valor = 1, num, nota = 0;
        num = entrada.nextInt();
        for (int i = 0; i < num; i++) {
            cadena = entrada.next();
            for (int j = 0; j < cadena.length(); j++) {
                if (cadena.charAt(j) == 'O') {
                    nota += valor;
                    valor++;
                }else{
                    valor = 1;
                }
            }
            System.out.println(nota);
            nota = 0;
            valor = 1;
        }
    }
}
Solucionado por Santiago y Amanda

lunes, 19 de enero de 2015

UVA 101 El problema de los bloques

BACKGROUND
Muchas áreas de la Informática utilizan dominios simples y abstractos para los estudios analíticos y empíricos. Por ejemplo, un estudio inicial AI de la planificación y la robótica (tiras) utiliza un mundo de bloques en el que un brazo de robot lleva a cabo las tareas que implican la manipulación de bloques.

En este problema va a modelar un mundo simple bloque bajo ciertas reglas y limitaciones. En lugar de determinar la forma de lograr un estado especificado, debes programar un brazo robótico para responder a un conjunto limitado de comandos.


EL PROBLEMA
El problema es analizar una serie de comandos que instruyen a un brazo de robot en la forma de manipular bloques que se encuentran sobre una mesa plana. Inicialmente hay n bloques en la mesa (numeradas de 0 a n-1) con el bloque b_i adyacente para bloquear b_(i + 1) para todo 0<=i<n , como se muestra en el siguiente diagrama:

Los comandos válidos para el brazo robot que manipula bloques son:

Poner A sobre de B “move a onto b”
donde a y b son números de bloque, poner “a” encima de  “b” y regresar cualquier bloque que estubiese encima superior de los bloques A y B a sus posiciones iniciales.

poner a encima b “move a over b”

donde “a” y “b” son números de bloque, poner “a” encima de la pila de bloque de contención b, después de regresar de cualquier bloque que se apilan en la parte superior del bloque “a” a sus posiciones iniciales.

colocar a sobre b “pile a onto b”

donde a y b son números de bloque, poner la pila “a” sobre “b”, Todos los bloques en la parte superior del bloque B se mueven a sus posiciones iniciales antes de adoptar pila lugar.

apilar a sobre b “pile a over b”

donde a y b son números de bloqueas, apilar la fila “a” sobre la fila “b”. Los bloques apilados encima de un bloque conservan su orden original cuando se mueven.

dejar
termina manipulaciones en el mundo de bloques.

Cualquier comando en el que “a” sea igual a “b”  o “a” y “b” estean en la misma pila de bloques es una orden ilegal. Todos los comandos ilegales deben ser ignorados y no deben tener ningún efecto en la configuración de los bloques.

ENTRADA
La entrada comienza con un entero n en una línea por sí mismo que representa el número de bloques en el mundo bloque. Usted puede asumir que 0 <n <25.
El número de bloques es seguido por una secuencia de comandos de bloque, un comando por línea. Su programa debe procesar todos los comandos hasta que se encuentra el comando quit.
Usted puede asumir que todos los comandos serán de la forma indicada anteriormente. No habrá comandos sintácticamente incorrectos.

SALIDA

La salida
 debe consistir en el estado final del mundo de los bloques. Cada posición debloque original numerado i (0<=i<n donde n es el número de bloques) debe aparecer seguido inmediatamente por dos puntos. Si hay al menos un bloque en él, los “:” deben ser seguido por un espacio, seguido por una lista de bloques que aparecen apilados en esa posición con cada número de bloque separado de otros números de bloque por un espacio. No ponga ningún espacio final de una línea.

Debe haber una línea de salida para cada posición del bloque (es decir, n líneas deproducción donde n es el número entero en la primera línea de la entrada).

10
move 9 onto 1
move 8 over 1
move 7 over 1
move 6 over 1
pile 8 over 6
pile 8 over 5
move 2 over 1
move 4 over 9
quit
 0: 0
 1: 1 9 2 4
 2:
 3: 3
 4:
 5: 5 8 7 6
 6:
 7:
 8:
 9:




TRADUCIDO POR: Santiago

UVA: LINK UVA

domingo, 18 de enero de 2015

Solucion 737 Gleaming the Cubes

import java.util.Scanner;

/**
 *
 * @author DAM101
 */
public class UVA737_GleamingTheCubes {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        int resultado, numCubos, d, x, y, z, inicioX, inicioY, inicioZ, finX, finY, finZ;
        numCubos = entrada.nextInt();
        while (numCubos > 0) {
            inicioX = entrada.nextInt();
            inicioY = entrada.nextInt();
            inicioZ = entrada.nextInt();
            d = entrada.nextInt();
            finX = inicioX + d;
            finY = inicioY + d;
            finZ = inicioZ + d;
            for (int i = 1; i < numCubos; i++) {
                x = entrada.nextInt();
                y = entrada.nextInt();
                z = entrada.nextInt();
                d = entrada.nextInt();
                inicioX = Math.max(inicioX, x);
                inicioY = Math.max(inicioY, y);
                inicioZ = Math.max(inicioZ, z);
                finX = Math.min(finX, x + d);
                finY = Math.min(finY, y + d);
                finZ = Math.min(finZ, z + d);
            }
            resultado = Math.max(0, (finX - inicioX) * (finY - inicioY) * (finZ - inicioZ));
            System.out.println(resultado);
            numCubos = entrada.nextInt();
        }
    }
}

viernes, 16 de enero de 2015

Solucion 138 Numeros Calles

O tempo de ejecucion de este ejercicio e demasiado largo, tendo o ejercicio un limite de 3 segundos. Aproximamos que a division entre o numero de casas da calle (segundo numero) entre o numero da vivienda (primer numero) partida de 0.75 e tendia a 0.70. Unha vez calculados os numeros podense imprimir e a UVA acepta a solucion.


package programame1;

public class UVA138_numerosCalles_PRINT {

    public static void main(String[] args) {
//%10d imprime o numero en un margen de 10 espacios á izquierda (como pedia o ejercicio).
        System.out.printf("%10d%10d%n", 6, 8);
        System.out.printf("%10d%10d%n", 35, 49);
        System.out.printf("%10d%10d%n", 204, 288);
        System.out.printf("%10d%10d%n", 1189, 1681);
        System.out.printf("%10d%10d%n", 6930, 9800);
        System.out.printf("%10d%10d%n", 40391, 57121);
        System.out.printf("%10d%10d%n", 235416, 332928);
        System.out.printf("%10d%10d%n", 1372105, 1940449);
        System.out.printf("%10d%10d%n", 7997214, 11309768);
        System.out.printf("%10d%10d%n", 46611179, 65918161);
    }
}







FORMA DE CALCULALO

/*
 * 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 UVA;

public class UVA138_numerosCalles {

    public static void main(String[] args) {
        int cant = 0, casasCalle = 1, sumaIzq, sumaDer;
        boolean correcto;
        while (cant <= 10) {
            correcto = false;
            while (!correcto) {
                for (int i = (casasCalle*70/100); i < (casasCalle*75/100); i++) {
                    sumaIzq = sumaNumeros(i - 1, 1);
                    sumaDer = sumaNumeros(i + 1, casasCalle);
                    if (sumaIzq == sumaDer) {
                        correcto = true;
                        cant++;
                        enseñaNumeros(i, casasCalle);
                    }
                }
                casasCalle++;
            }
        }
    }

    public static int sumaNumeros(int inicio, int fin) {
        int suma = 0, mayor, menor;
        mayor = Math.max(inicio, fin);
        menor = Math.min(inicio, fin);
        for (int i = menor; i <= mayor; i++) {
            suma += i;
        }
        return suma;
    }

    public static void enseñaNumeros(int casa, int calle) {
        System.out.printf("%10d%10d%n", casa, calle);
    }
}


lunes, 12 de enero de 2015

Uva 1636 Headshot

Headshot


Tienes un revolver con un cargador con n huecos. Los huecos estas en un circulo en el cargador, cada hueco puede estar vacío o tener una bala . Un hueco esta alineado con el cañón de la pistola. Cuando pulsas el gatillo, el cargador gira un hueco y el martillo golpea el hueco, si tiene una bala la pistola disparara, si esta vacía solo se escuchara un click


UVA 686 Goldbach's Conjecture (II)

Goldbach's Conjecture : Para cualquier numero n mayor o igual a 4 existe como mínimo un par de números primos p1 y p2 que cumplen n= p1+p2.


UVA 1210 Suma de los números primos consecutivos

Algunos números enteros positivos pueden ser representados por una suma de uno o más números primos consecutivos. ¿Cuántas  representaciones tiene un entero positivo dado? Por ejemplo, el número entero 53 tiene dos representaciones 5 + 7 + 11 + 13 + 17 y 53. El número entero 41 tiene tres representaciones 2 + 3 + 5 + 7 + 11 + 13, 11 + 13 + 17, y 41. El número entero 3 tiene sólo una representación, que es 3. El número entero 20 no tiene representaciones. Tenga en cuenta que sumandos deben ser números primos consecutivos, por lo que ni 7 + 13 ni 3 + 5 + 5 + 7 es una representación válida para el entero 20. Su misión es escribir un programa que informa del número de representaciones para el entero positivo dado.

entrada

La entrada es una secuencia de números enteros positivos cada uno en una línea separada. Los enteros son entre 2 y 10000, ambos inclusive. El final de la entrada se indica con un cero.

salida

La salida debe estar compuesta por líneas, cada una corresponde a una  entrada, excepto el último cero. Una línea de salida incluye el número de representaciones para el entero de la entrada como la suma de uno o más números primos consecutivos. No hay otros caracteres que deben insertarse en la salida.

Ejemplo de entrada

2
3
17
41
20
666
12
53
0
Ejemplo de salida

1
1
2
3
0
0
1

UVA 575 Pasar un número de Skew Binary a entero.

Cuando un número es expresado en decimal, el dígito k-th representa un múltiplo de 10k. (Los dígitos son numerados de derecha a izquierda, donde el dígito menos significante es el 0.) Por ejemplo, 
\begin{displaymath}81307_{10} = 8 \times 10^4 + 1 \times 10^3 + 3 \times 10^2 + ...
...mes 10^1 +
7 \times 10 0 = 80000 + 1000 + 300 + 0 + 7
= 81307.
\end{displaymath}


Cuando un número es expresado en binario, el dígito k-th representa un múltiplo de 2k. Por ejemplo,

\begin{displaymath}10011_2 = 1 \times 2^4 + 0 \times 2^3 + 0 \times 2^2 + 1 \times 2^1 +
1 \times 2^0 = 16 + 0 + 0 + 2 + 1 = 19.
\end{displaymath}


En binario skew, el dígito k-th representa un múltiplo de 2k+1 - 1.Los únicos dígitos posibles son el 0 y el 1, excepto que el menos significante dígito nonzero puede ser un 2.Por ejemplo,

\begin{displaymath}10120_{skew} = 1 \times (2^5 - 1) + 0 \times (2^4-1) + 1 \tim...
...2 \times (2^2-1) + 0 \times (2^1-1)
= 31 + 0 + 7 + 6 + 0 = 44.
\end{displaymath}


Los primeros 10 números en binario skew son el 0, 1, 2, 10, 11, 12, 20, 100 y 102. (Binario skew es útil en diferentes aplicaciones porque es posible añadir con un máximo acarreado. Sin embargo, esto no tiene nada que ver con el siguiente problema.)

Input 

La entrada contiene una o mas líneas, cada cual contiene un entero n. Si n = 0 señaliza el final de la entrada, y de lo contrario n es un no negativo entero en binario skew.

Output 

Por cada numero, sale el decimal equivalente.El valor decimal de n como máximo será 231 - 1 = 2147483647.

Ejemplo de Entrada

10120
200000000000000000000000000000
10
1000000000000000000000000000000
11
100
11111000001110000101101102000
0

Ejemplo de Salida


44
2147483646
3
2147483647
4
7
1041110737


FUENTE: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=7&page=show_problem&problem=516

Autor traducción: Jesús Casasnovas Garde.

272 Comillas TEX

TeX es un lenguaje de composición desarrollada por Donald Knuth. Toma el texto original, junto con unas pocas
instrucciones de composición tipográfica y produce, esperando, un documento bonito. Documentos bonitos
utilizan `` y " para delimitar las citas, en lugar de lo mundano " que es lo que usa la
mayoría de los teclados. Los teclados normalmente no tienen una blockquote orientada, pero tienen una
comilla simple izquierda ` y una comilla simple derecha ' . Comprueba tu teclado ahora para localizar
la tecla comilla-izquierda ` (a veces llamado el `` clave backquote ") y la tecla derecha comilla
simple ' (a veces llamado el `` apóstrofe "o simplemente` `quote"). Ten cuidado de no confundir la
izquierda comilla simple ' con la `` barra invertida "clave \ . TeX Permite al usuario escribir dos
comillas individuales izquierda `` para crear una izquierda doble `` y dos individuales
derechas '' para crear una doble-comilla derecha ''. La mayoría de los mecanógrafos, sin embargo,
están acostumbrados a la delimitación de sus citas con la ONU orientadas comillas dobles " .

Si la fuente de contenido

"Ser o no ser", Dijo el bardo ", que es la cuestión."

entonces el documento producido por TeX no contendría la forma deseada:

`` Ser o no ser ", Dijo el bardo,` `esa es la cuestión."

Con el fin de producir la forma deseada, el archivo de origen debe contener la secuencia:

`` Para ser o no ser, '' Dijo el bardo, `` que es la pregunta. ''

Debes escribir un programa que convierte el texto que contiene comillas dobles ( " caracteres) en un texto
idéntico excepto que las comillas dobles han sido reemplazadas por las secuencias de dos caracteres requeridos por TeX
para delimitar las citas con comillas dobles orientadas. La doble -quote ( " ) caracteres deben ser reemplazados
adecuadamente por cualquiera de las `` si el " abre una cita y por '' si el " cierra una cita. Observe que no se
plantea la cuestión de citas anidadas: El primer " debe ser reemplazado por `` , la siguiente por '' ,
la siguiente por `` , la siguiente por '' , la siguiente por `` , la siguiente por '' , etcétera.

Entrada y Salida

La entrada consistirá en varias líneas de texto que contienen un número par de comillas dobles ( " ) caracteres de
entrada se termina con un carácter de fin de archivo El texto debe ser de salida exactamente como era de entrada excepto que..:

el primero " en cada par se sustituye por dos ` caracteres: `` y
el segundo " en cada par se sustituye por dos " personajes: '' .

Ejemplo de entrada:

"Ser o no ser", Dijo el Bardo ", que
es la cuestión ".
El concursante programación respondió: "No estoy de acuerdo.
Para `C 'o no' C ', esa es la cuestión!"

Ejemplo de salida:

`` Para ser o no ser, '' Dijo el Bard, `` que
es la pregunta ''.
El concursante programación respondió: `` Tengo que discrepar.
Para `C 'o no' C ', esa es la cuestión!' '


Autor: Roberto
Fuente:Enlace a la uva

138 Numeros de calle

Un programador de ordenadores vive en una calle con casas numeradas consecutivamente que empiezan en el numero 1 por un lado de la calle. Todas las noche ella anda con su perro sobre salir de su casa, girar a un lado al azar, caminar hasta el final de la calle y volver. Una noche ella suma los números de las calles por las que ella pasa, excluyendo la suya. La próxima vez ella anda en la otra dirección haciendo lo mismo y descubre, para su asombro, que las dos sumas dan lo mismo. Esto esta determinado en parte por el numero de su casa y en parte por el numero de viviendas en la calle. Sin embargo, es un detalle que le gusta y decide que todas sus casas posteriores deben compartirlo.

Escribe un programa que busque pares de números que satisfagan esta condición. Para empezar tu lista, los primeros pares de números son: (numero de casa, ultimo numero)

         6         8
        35        49

ENTRADA Y SALIDA

No hay una entrada para el programa. La salida consiste en 10 líneas que contengan pares de números, cada uno contenido en un espacio de 10 caracteres, como se muestra arriba


TRADUCTORES: Amanda Álvarez  y Santiago Gómez.

737 - Gleaming the Cubes

Como ingeniero jefe de la nave estelar Interprize, la tarea de reparar el hyperstellar, software transwarped de salida cúbico ha caído sobre sus hombros. En pocas palabras, se debe calcular el volumen de la intersección de cualquier lugar 2-1000 cubos.

Entrada y Salida

El archivo de datos de entrada consta de varios conjuntos de cubos para el que se debe calcular el volumen de sus intersecciones. La primera línea del archivo de datos contiene un número (de 2 a 1000) que indica el número de cubos que siguen, un cubo por línea. Cada línea que describe un cubo contiene cuatro enteros. Los tres primeros números enteros son las coordenadas x, y, y z de la esquina de un cubo, y el cuarto número entero positivo es la distancia que el cubo se extiende en cada una de las tres direcciones (paralelo a los ejes x, y, y z) a partir de esa esquina.

Después de los datos para el primer conjunto de cubos será un número que indica cuántos cubos están en un segundo conjunto, seguido por las descripciones de cubos para el segundo conjunto, de nuevo uno por línea. Después de esto será un tercer conjunto, y así sucesivamente. Su programa debe seguir para procesar conjuntos de cubos, la salida del volumen de sus intersecciones para el archivo de salida, un juego por la línea, hasta un cero es leído por el número de cubos.

Tenga en cuenta que el archivo de datos siempre contendrá al menos un conjunto de cubos, y cada conjunto contendrá al menos 2 y en la mayoría de 1000 cubos. Para cualquier conjunto dado de cubos, el volumen de sus intersecciones no excederá de 1.000.000 unidades.


UVA 484 The Department of Redundancy Department

Escriba un programa que nos permite eliminar todos los duplicados de una secuencia de números enteros e imprimir la lista de enteros únicos que ocurren en la secuencia de entrada, junto con el número de ocurrencias de cada uno.

Entrada:3 1 2 2 1 3 5 3 3 2

Salida:
3 4
1 2
2 3
5 1

Autores: Kevin, Borja y Adrián.

Fuente:
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=6&page=show_problem&problem=425