Mostrando entradas con la etiqueta 138. Mostrar todas las entradas
Mostrando entradas con la etiqueta 138. Mostrar todas las entradas

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

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.