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

0 0 votos
Article Rating
Subscribe
Notify of
guest
0 Comments
Comentarios en línea
Ver todos los comentarios