Reto Números de Lychrel en Java

Hola querido lector, cómo estáis? Yo la verdad estoy bastante bien, con mucha energía, y nada he estado viendo un par de retos de aceptaelreto.com, y he visto un reto, en el cual voy a aprovechar código de otro tutorial que hice «invertir palabras en Java«, para ello:

Cuando se aburren, los aficionados a las matemáticas se dedican a jugar con los números. Eso les lleva, por ejemplo, a coger cualquier número, darle la vuelta y sumarlo a sí mismo, repitiendo el proceso una y otra vez hasta dar con un número capicúa. Por ejemplo, para el 91 llegamos a un capicúa en sólo dos pasos:
91 + 19 = 110
110 + 011 = 121
Algunos números se resisten a alcanzar un capicúa. El 196 es el número más pequeño para el que no se ha llegado a ninguno, por más que se ha intentado. Los matemáticos no han podido demostrar que, efectivamente, no vaya a llegarse a uno. Mientras continúan buscando una demostración, los aficionados siguen sumando y sumando con la esperanza de llegar a él. Los números con los que, se sospecha, no puede alcanzarse un capicúa se conocen como números de Lychrel. Curiosamente, algunos números capicúa parecen ser también números de Lychrel.

Tabla de contenidos

Entrada

La entrada comienza con un número indicando la cantidad de casos de prueba que vendrán a continuación. Cada caso de prueba estará compuesto de un número 1 ≤ n ≤ 100.000.

Salida

Para cada caso de prueba n, el programa deberá indicar el número de iteraciones que hay que dar hasta llegar a un número capicúa, seguido del número capicúa alcanzado. Si durante el proceso se llega a un número mayor que 1.000.000.000, se deberá asumir que el capicúa no es alcanzable y escribir «Lychrel?«1.

Aquí dejo los pasos para resolver este problema
1) Agarro un número
2) Lo convierto en texto
3) Le doy la vuelta
4)Lo convierto en Entero y lo comparo con el original

Aquí les dejo el código:

        int numeroFacilitado;
        int numOri;
        int numeroInvertido;
        Scanner sca = new Scanner(System.in);
        String stringFacilitado;
        String stringInvertido;
        int longitud;
        boolean repetir = true;
        boolean lychrel = true;
        int maximo = 100000;
        int contador = 0;

        try {
            System.out.println(«Escríbame algún número:»);
            numeroFacilitado = sca.nextInt();
            numOri = numeroFacilitado;
            stringFacilitado = numeroFacilitado + «»;
            do {

                stringInvertido = «»;
                stringFacilitado = numeroFacilitado + «»;
                longitud = (int) stringFacilitado.length() – 1;
                do {

                    stringInvertido = stringInvertido + stringFacilitado.charAt(longitud);//nos devuele el carácter en la posición
                    longitud = longitud – 1;//vamos restando posiciones

                } while (longitud >= 0);

                numeroInvertido = Integer.parseInt(stringInvertido);

                if (numeroInvertido == numeroFacilitado) {
                    System.out.println(numOri + » » + numeroFacilitado + » en » + (contador) + » iteraciones»);
                    lychrel = false;
                    repetir = false;
                }
                numeroFacilitado = numeroFacilitado + numeroInvertido;
                contador = contador + 1;
            } while (contador < maximo && repetir);
            if (lychrel == true) {
                System.out.println(«Lychrel?»);
            }
        } catch (Exception ex) {
            System.out.println(«Debes de poner un número válido»);
        }

Bueno espero que os haya gustado y entretenido, si quieres recibir más contenido similar te recomiendo que te suscribas a mi página en facebook que está al principio de esta web.

FUENTE
https://www.aceptaelreto.com/problem/statement.php?id=205

Gracias por visitar mi blog de informática, mi nombre es Tomás y soy formador y desarrollador web. Si quiere usted dejarme alguna sugerencia, ayuda o quiere un servicio de formación estoy escuchando ofertas en tomas.gonzalez@infogonzalez.com, en Facebook a https://www.facebook.com/Infogonzalez estoy deseando escucharle. Su duda o sugerencia NO molesta.

Deja un comentario

Información básica sobre protección de datos Ver más

  • Responsable: Tomas Gonzalez.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

error: Content is protected !!

Descubre más desde InfoGonzalez - Blog de formador e informático

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo

Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad