Título: Numero narcisista Publicado por: DamnSystem en 11 Noviembre 2017, 21:30 pm Llevo todo el dia con el ejercicio y no encuentro la forma.
Ahora mismo consigo tener el 1 15 y el 153 pero no encuentro la maldita forma de cuando salga 15 % 10, y cuando salga 153 % 100, sin utilizar un if, Podeis darme un empujón o alguna idea de como hacerlo¿? // 22. Un número entero de n dígitos se dice que es narcisista si se puede obtener como la suma de // las potencias n-ésimas de cada uno de sus dígitos. Por ejemplo 153 y 8208 son números narcisistas // porque 153 = 13 + 53 + 33 (153 tiene 3 dígitos) y 8208 = 84 + 24 + 04 + 84 (8208 tiene 4 dígitos). // Construir un programa que, dado un número entero positivo, nos indique si el número es o no // narcisista. // Finalidad: Ejercitar los bucles. Dificultad Media. #include <iostream> #include <cmath> using namespace std; int main() { // Variables y constantes int numero_introducido = 0, numero_backup = 0, potencia = 0, resultado = 0, divisor = 100000, resultado_final = 0; // Entrada del programa do{ cout << "Introduce un numero: " << endl; cin >> numero_introducido; cin.clear(); }while(numero_introducido <= 0); // Resolucion del programa numero_backup = numero_introducido; while(numero_backup != 0){ numero_backup /= 10; potencia++; } numero_backup = numero_introducido; while(numero_backup != 0){ resultado = numero_backup / divisor; cout << resultado << endl; if(resultado != 0 && resultado > 0){ resultado_final = resultado_final + pow(resultado, potencia); } divisor /= 10; cout << resultado_final << endl; } return 0; } Título: Re: Numero narcisista Publicado por: DamnSystem en 11 Noviembre 2017, 21:59 pm Nada conseguido después de toda la tarde mirando un código como lo hacia lo he conseguido entender: Paso código por si en un futuro alguien lo necesita como hoy yo.
// 22. Un número entero de n dígitos se dice que es narcisista si se puede obtener como la suma de // las potencias n-ésimas de cada uno de sus dígitos. Por ejemplo 153 y 8208 son números narcisistas // porque 153 = 13 + 53 + 33 (153 tiene 3 dígitos) y 8208 = 84 + 24 + 04 + 84 (8208 tiene 4 dígitos). // Construir un programa que, dado un número entero positivo, nos indique si el número es o no // narcisista. // Finalidad: Ejercitar los bucles. Dificultad Media. #include <iostream> #include <cmath> using namespace std; int main() { // Variables y constantes int n, contador = 0, cn = 0, suma = 0, ultima_cifra = 0; //Entrada del programa do{ cout << "Introduce un numero: " << endl; cin >> n; }while(n <= 0); // Desarrollo del programa // Copia de n cn = n; // Saber el numero de cifras while(n > 0){ n /= 10; contador++; } // Volver a darle a n su valor incial n = cn; for(int i = 0; i < contador; i++){ ultima_cifra = n % 10; suma = suma + pow(1.0*ultima_cifra, contador); n /= 10; } n = cn; if(suma == n){ cout << "El numero es narcisista" << endl; } else{ cout << "No es narcisista" << endl; } return 0; } |