Mi solucion Ejercicio 6 nacional 2012 nivel 2
Mi solucion ejercicio 6 nacional que dice:
Encontrar todos los números N de cuatro cifras, tales que de las cifras que aparecen en N² no haya ninguna que aparece en N.
Codigo:
#include <iostream> #include <vector> #include <stdlib.h> #include <stdio.h> #include <time.h> #include <cmath> using namespace std; /*solucion de Ariel Nowik */ //Encontrar todos los números N de cuatro cifras, tales que de las cifras que aparecen en N² no haya ninguna que aparece en N. vector <int> cifras(int numero){ //funcion para sacar digitos de un numero y almacenarlos en una lista vector <int> ci; for (int m = 10; m < numero*10;m = m*10){ int n = numero % m; int n2 = numero % (m / 10); int n3 = n - n2; n3 = n3 / (m/10); ci.push_back(n3); } return ci; } int aparecen(int n,int nn){ //funcion para revisar lo que pide el problema con cada numero vector <int> cn = cifras(n); vector <int> cnn = cifras(nn); for (int x = 0;x < cnn.size();x++){ for (int y = 0;y < cn.size();y++){ if (cnn[x] == cn[y]){ break; } if (y == cn.size()-1){ return false; } } } return true; } int main(){ vector <int> soluciones; for (int n = 1000;n < 10000;n++){ if (aparecen(n,n*n) == true){ //si se cumplen las condiciones del problema se almacena la solucion en una lista soluciones.push_back(n); } } for (int x = 0;x < soluciones.size();x++){ //se imprimen las soluciones cout<<"------------------------------------"<<endl; cout<<"SOLUCION "<<x<<":"<<endl; cout<<"N = "<<soluciones[x]<<endl; cout<<"N * N = "<<soluciones[x]*soluciones[x]<<endl; cout<<"------------------------------------"<<endl; } cout<<"RTA: Hay "<<soluciones.size()<<" soluciones"<<endl; cout<<"------------------------------------"<<endl; }
Salida del programa:
------------------------------------
SOLUCION 0:
N = 1000
N * N = 1000000
------------------------------------
------------------------------------
SOLUCION 1:
N = 1049
N * N = 1100401
------------------------------------
------------------------------------
SOLUCION 2:
N = 1235
N * N = 1525225
------------------------------------
------------------------------------
SOLUCION 3:
N = 2350
N * N = 5522500
------------------------------------
------------------------------------
SOLUCION 4:
N = 2983
N * N = 8898289
------------------------------------
------------------------------------
SOLUCION 5:
N = 4762
N * N = 22676644
------------------------------------
------------------------------------
SOLUCION 6:
N = 4832
N * N = 23348224
------------------------------------
RTA: Hay 7 soluciones
------------------------------------