Tema destacado: Sigue las noticias más importantes de elhacker.net en twitter!
Autor
|
Tema: Ejercicios Básicos (Leído 6,796 veces)
|
Myth.ck
Desconectado
Mensajes: 305
Algorithmics & C++ Studient
|
¿Como resolverian los siguientes ejercicios? A través de pseudocódigo o c++. Problema 1: Dado un número natural K, mostrar los dos primeros naturales consecutivos A y B tales que A! y B! tengan una cantidad de dígitos que se diferencian al menos en K. Problema 2: Dado un número natural K, mostrar los dos naturales consecutivos A y B tales que K €[A!,B!] Suerte! Jeje el € es el símbolo de pertenece. Un ejemplo de pseudocódigo que hice: Dado un número natural K, y un número natural F, mostrar el resultado de (P-Q) mientras sea menor que K, donde: P=(-1)E*E*F Q=(-1)E+1*(E+1)*F E = 0, 1, ... 
|
|
|
|
« Última modificación: 14 Mayo 2009, 03:43 por |m@deb| »
|
En línea
|
Un intelectual es un hombre que usa más palabras de las necesarias para decir más cosas de las que sabe.
|
|
|
Myth.ck
Desconectado
Mensajes: 305
Algorithmics & C++ Studient
|
Como ayuda...
Problema 1: E: K. Cond. sobre E: K es natural. S: A y B. Cond. sobre S: |A!-B!|>=K, A y B son consecutivos, AyB son los menores. Caso de prueba: CP1) Entrada: K=5 Salida: A=2, B=3. CP2) Entrada: K=4 Salida: A=2, B=3.
Problema2: E: K.Cond. sobre E: K es natural. S: A y B. Cond. sobre S: A y B son consecutivos. K €[A!,B!]. Casos de Prueba: CP1) Entrada: K=5 Salida: A=2, B=3. CP2) ) Entrada: K=2 Salida: A=2, B=3.
Espero que les ayude en algo.
|
|
|
|
|
En línea
|
Un intelectual es un hombre que usa más palabras de las necesarias para decir más cosas de las que sabe.
|
|
|
Myth.ck
Desconectado
Mensajes: 305
Algorithmics & C++ Studient
|
Parece que nadie se anima: Miren una posible solución al ejercicio nº 1 
|
|
|
|
|
En línea
|
Un intelectual es un hombre que usa más palabras de las necesarias para decir más cosas de las que sabe.
|
|
|
ny0x
Desconectado
Mensajes: 336
|
dos naturales consecutivos A y B tales que K €[A!,B!] (P-Q) mientras sea menor que K, donde: P=(-1)E*E*F Q=(-1)E+1*(E+1)*F E = 0, 1, ... WTF? demasiadas matematicas para mi cerebro  , a mi todavia no me enseñan calculo (creo que eso es) o si no si me animo 
|
|
|
|
|
En línea
|
|
|
|
Myth.ck
Desconectado
Mensajes: 305
Algorithmics & C++ Studient
|
Hola ny0X... Si quieres puedes leerte esto... http://foro.elhacker.net/programacion_general/algoritmia_metodos_para_resolucion_de_problemas-t254890.0.htmlProblema 1: E: K. Cond. sobre E: K es natural. S: A y B. Cond. sobre S: |A!-B!|>=K, A y B son consecutivos, AyB son los menores. Caso de prueba: CP1) Entrada: K=5 Salida: A=2, B=3. CP2) Entrada: K=4 Salida: A=2, B=3. Los numeros naturales son todos los numeros mayores a 0 y que son enteros. En realidad son los que usamos para contar... 1,2,3,4...999...2560... Luego Tu salida tiene que ser A y B al menos con diferencia igual a K con a y b consecutivos La diferencia de estos siempre es positiva... Ej: A=1(primer numero natural) B=A+1=>B=2 A=1 B=2 El factorial se calcula por ejemplo 1!= 1x1 y 2!=2x1 A!-B!=1-2=-1 pero con |-1| el -1 se hace "1"=> A!-B!=1 Con respecto a (P-Q) mientras sea menor que K, donde: P=(-1)E*E*F Q=(-1)E+1*(E+1)*F E = 0, 1, ... P-Q es una simple resta. a la variable P se le asigna la expresion (-1)E*E*F a la variable Q se le asigna la expresion (-1)E+1*(E+1)*F Luego E=0,1,2 indica que E ira incrementando, por lo tanto ahi te das la idea que es un contador. Espero que te haya servido de ayuda. Puedes consultar cualquier cosa. PD: Para resolver estos problemas, siempre es bueno identificar bien el problema, es decir, identificar los terminos que no conoces, y luego dar un caso de prueba, que generalmente es un "supuesto" resultado que esperas ver en la salida de tu programa.
|
|
|
|
|
En línea
|
Un intelectual es un hombre que usa más palabras de las necesarias para decir más cosas de las que sabe.
|
|
|
ny0x
Desconectado
Mensajes: 336
|
lo que me confunde son los terminos, eso de numeros reales, naturales, conjunto no se que ... en cuanto a la resolucion de problemas creo que lo lei en un libro de C++, creo que es la edicion especial de "El lenguaje de programacion c++" por bjarne stroupstrup. Ahi recomienda lo que tu dices, pero como cuando yo lei eso ya tenia el mal habito de escribir lo que se me ocurra sin planearlo antes. A causa de eso me he dado una de roturas de cabeza ...  . Pero bueh cuando aprendes solo no tienes muchas opciones, ni quien te guie  gracias, por los links saludos P.D A practicar algoritmos ... 
|
|
|
|
|
En línea
|
|
|
|
Myth.ck
Desconectado
Mensajes: 305
Algorithmics & C++ Studient
|
lo que me confunde son los terminos, eso de numeros reales, naturales, conjunto no se que .. Reales, naturales, enteros... Son solo tipos de conjuntos.  Lo que tiene cada conjunto es que varían las propiedades de cada uno, y los "números" por decirlo así, que habitan en cada uno. Eso no es mucho problema, si todavía no tienes mucha idea solo basta con que trabajes unicamente con reales, cuyas propiedades son las que conoces, y los números incluyen los fraccionarios y enteros(+ y -). en cuanto a la resolucion de problemas creo que lo lei en un libro de C++ Mmm, yo lo saque de unos apuntes de algoritmia. Pero bueh cuando aprendes solo no tienes muchas opciones, ni quien te guie . Si te refieres sólo a eso de escribirlo en un papel, yo generalmente cuando me inicié, no tenía a nadie que me guíe, pero igualmente lo tomé como hábito cuando no entendía ciertas cosas. Salu2!
|
|
|
|
|
En línea
|
Un intelectual es un hombre que usa más palabras de las necesarias para decir más cosas de las que sabe.
|
|
|
Myth.ck
Desconectado
Mensajes: 305
Algorithmics & C++ Studient
|
Aqui un nuevo reto, espero que lo resuelvan rápido aplicando el mejor método. Mostrar los k primeros numeros naturales que verifiquen la condicion de poseer una cantidad impar de divisoresSuerte!
|
|
|
|
|
En línea
|
Un intelectual es un hombre que usa más palabras de las necesarias para decir más cosas de las que sabe.
|
|
|
Myth.ck
Desconectado
Mensajes: 305
Algorithmics & C++ Studient
|
Al parecer nadie se anima o parece que no es familiar este subf pero he aqui la respuesta. ; ; "Ingrese k: "; ; ; ; ; "; "; ; ; ; ;
|
|
|
|
|
En línea
|
Un intelectual es un hombre que usa más palabras de las necesarias para decir más cosas de las que sabe.
|
|
|
Myth.ck
Desconectado
Mensajes: 305
Algorithmics & C++ Studient
|
En C++ #include <iostream> #include <math.h> using namespace std; int k,num; double i,result; bool flag; int main() { i=1; num=0; flag=1; cout << "Ingrese numero" << endl; cin>>k; while (flag==1) { result=sqrt(i); if(result==((int)result)) { cout<<i<<"; "; num++; } if(num==k) { flag=0; } i++; } system("PAUSE"); return 0; }
|
|
|
|
|
En línea
|
Un intelectual es un hombre que usa más palabras de las necesarias para decir más cosas de las que sabe.
|
|
|
|
ghastlyX
|
Este código no es muy eficiente... Sabemos que un número tiene un número impar de divisores si y sólo si es un cuadrado perfecto. En vez de ir número a número y ver si es un cuadrado, es más fácil directamente coger los k primeros números y mostrar sus cuadrados. Como yo digo haces k iteraciones, como tú haces estás mirando hasta el último de los cuadrados perfectos, es decir, k 2 iteraciones. Un saludo de ghastlyX 
|
|
|
|
|
En línea
|
|
|
|
Myth.ck
Desconectado
Mensajes: 305
Algorithmics & C++ Studient
|
Mmm es algo parecido claro a lo que hice, pero tu te refieres a lo siguiente?: For(i=0;i<=K;i++) { x=i^2;//En c++ no es i^2 pero basta con agregar una función cout<<x<<";"<<endl; }
|
|
|
|
|
En línea
|
Un intelectual es un hombre que usa más palabras de las necesarias para decir más cosas de las que sabe.
|
|
|
|
ghastlyX
|
Sí, así te ahorras tener que pasar por cada uno de los cuadrados. Habría que decidir si el cero es o no es cuadrado perfecto. Si lo consideras cuadrado perfecto, sería el bucle hasta K - 1 incluído, si no empezaría en 1 y sería hasta K. Un saludo de ghastlyX 
|
|
|
|
|
En línea
|
|
|
|
Myth.ck
Desconectado
Mensajes: 305
Algorithmics & C++ Studient
|
Tienes razón... Muchas gracias 
|
|
|
|
|
En línea
|
Un intelectual es un hombre que usa más palabras de las necesarias para decir más cosas de las que sabe.
|
|
|
Eliptico
Desconectado
Mensajes: 153
|
Buenas!!!!!!
Solo quiero dejar una pequeña explicacion sobre el primer y el segundo problema:
1º) Si bucamos don numeros naturales consecutivos cuya diferencia se k se tendra que
k=(n+1)! - n! = (n+1)*n! - n! = ( (n+1) - 1) * n! = n*n!
Es decir, existira n natural cumpliendo (n+1)! - n! = k si y solo si k=n*n!
es decir, si existe un natural n tal que k=n*n! entonces existen el A=n y el B=(n+1) que se buscan, si no no.
2º) sea N={n naturales| k>=n!}
N es un conjunto de naturales acotado superiormente por k, por lo tanto tendra un maximo m cumpliendo que m! <= k.
(m+1) no puede estar en N, ya que si estubiese seria m! < (m+1)! <= k, lo cual seria contrdictorio con que m fuese maximo.
Por lo tanto (m+1) no pertenece a N y (m+1) no puede cumplir la condicion (m+1)!<=k luego (m+1)! > k
Es decir. 2 soluciona cuando se encuentra el primer n natural tal que n!>k, y en este caso se tendra que A=(n-1) y B=n.
Bueno, como el intervalo es cerrado por ambos lados, si (n-1)! = k se tendra que [(n-2)! , (n-1)!] tambien cumplen las condiciones del problema (A=(n-2) , B=(n-1)).
Ahora los dos problemas son mas faciles, ¿No?
Un saludo!!!!!!!!!
|
|
|
|
|
En línea
|
|
|
|
|
|