Reto de Los Tres Últimos Dígitos en Java

Hola querido lector, hoy traigo otro reto, en este caso de la página de Nacho Cabanes, en la cual tenemos que hacer una operación y agarrar los 3 últimos números antes del decimal (.), es un ejercicio bastante entretenido aquí os dejo el enunciado:

Debes encontrar los tres últimos dígitos antes de la coma decimal para (3 + raíz(5)) elevado a n.
Por ejemplo, para n = 5, (3 + √5)5 = 3935.73982… La respuesta es 935.
Para n = 2, (3 + √5)2 = 27.4164079… La respuesta es 027.
El primer dato de entrada será la cantidad de valores que se van a analizar.
Nota: el programa no debe avisar al usuario con mensajes como «Introduzca un número». Debe leer directamente de consola en el formato que se muestra en el apartado «Entradas y salidas de ejemplo». La salida debe ser exactamente como se muestra en ese apartado. El programa debe comportarse bien con valores grandes, de al menos n=30 (sería deseable que también con valores por encima de 1.000.000).

Básicamente lo que he hecho ha sido:

1) Pedir número
2) Despegar con split, la primera cifra
3) Obtener cálculo: numero.lenght-3
4) Jugar con esta característica en 2 bucles bien diferenciados

Espero que os guste mi código, por aquí lo dejo:

try {

            double numero;
            int potencia;
            String[] numeros;
            String numeroString;
            String Intermedio = «», numeroFinal;
            int longitudString;

            Scanner sca = new Scanner(System.in);
            System.out.println(«Escribeme un número»);
            potencia = sca.nextInt();

            numero = (double) Math.pow((3 + Math.sqrt(5)), potencia);
            //System.out.println(«» + numero);
            numeroString = numero + «»;

            numeros = numeroString.split(«\.»);
            String str = numeros[0];
            longitudString = numeros[0].length() – 3;

            if (longitudString > 0) {
                numeroFinal = «»;
                for (int i = longitudString; i < numeros[0].length(); i++) {
                    numeroFinal = numeroFinal + numeros[0].charAt(i);
                }

            } else {
                numeroFinal = numeros[0] + «»;
                do {
                    numeroFinal = «0» + numeroFinal;
                    longitudString = longitudString + 1;

                } while (longitudString < 0);
            }
            System.out.println(«El numero es » + numeroFinal);
        } catch (Exception ex) {
            System.out.println(«Ponga un número válido cod: » + ex.getMessage());
        }

Bueno esto ha sido todo por este tutorial, si quieres recibir contenido de este tipo, puedes seguirme en mi página de Facebook o en twitter, redes que encontrarás al lado derecho, del inicio de esta página, un saludo, chao

FUENTE:

http://www.nachocabanes.com/retos/reto.php?n=004

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.

Tomas Gonzalez
Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad
Creative Commons License
Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
A %d blogueros les gusta esto: