elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ejercicios
| | | |-+  Ejercicios Básicos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Ejercicios Básicos  (Leído 19,164 veces)
ghastlyX
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.900



Ver Perfil
Re: Ejercicios Básicos
« Respuesta #10 en: 24 Mayo 2009, 02:10 am »

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, k2 iteraciones.

Un saludo de ghastlyX ;)


En línea

Myth.ck


Desconectado Desconectado

Mensajes: 303


Algorithmics & C++ Studient


Ver Perfil
Re: Ejercicios Básicos
« Respuesta #11 en: 24 Mayo 2009, 02:17 am »

Mmm es algo parecido claro a lo que hice, pero tu te refieres a lo siguiente?:

Código
  1. For(i=0;i<=K;i++)
  2. {
  3.    x=i^2;//En c++ no es i^2 pero basta con agregar una función
  4.    cout<<x<<";"<<endl;
  5. }


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
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.900



Ver Perfil
Re: Ejercicios Básicos
« Respuesta #12 en: 24 Mayo 2009, 02:33 am »

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 Desconectado

Mensajes: 303


Algorithmics & C++ Studient


Ver Perfil
Re: Ejercicios Básicos
« Respuesta #13 en: 24 Mayo 2009, 02:36 am »

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 Desconectado

Mensajes: 153


Ver Perfil
Re: Ejercicios Básicos
« Respuesta #14 en: 28 Mayo 2009, 01:18 am »

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

Eliptico

Desconectado Desconectado

Mensajes: 153


Ver Perfil
Re: Ejercicios Básicos
« Respuesta #15 en: 28 Mayo 2009, 08:46 am »

Huy, vaya rayada con el primer problema. jejejeje. Lo he entendido y mal y lo he puesto patas arriba.   :-[

A ver si lo corrijo qu la solucion no es tan matematica   :silbar:
En línea

Eliptico

Desconectado Desconectado

Mensajes: 153


Ver Perfil
Re: Ejercicios Básicos
« Respuesta #16 en: 28 Mayo 2009, 09:27 am »

Ahi va la solucion:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main(int argc,char* argv[])
  6. {
  7.    unsigned long fact1=1,fact2=1,i=1;
  8.    char num1[50],num2[50];
  9.    int difCifras; /*no creo que un unsigned long tenga tantas cifras :P*/
  10.  
  11.    do{
  12.        printf("Introduce la diferencia de cifras entre dos factoriales consecutivos: ");
  13.        fflush(stdin);
  14.        scanf("%d",&difCifras);
  15.    }while(difCifras<0);
  16.  
  17.    do{
  18.        fact1*=i;
  19.        fact2=fact1*(i+1);
  20.  
  21.        sprintf(num1,"%lu",fact1);
  22.        sprintf(num2,"%lu",fact2);
  23.  
  24.        i++;
  25.        if(i==13) /*13! excede la capacidad de un usigned long*/
  26.            break;
  27.    }while(strlen(num2)-strlen(num1) < difCifras);
  28.  
  29.    i--;
  30.  
  31.    if(i!=12)
  32.        printf("%d! y %d! se diferencian en %d cifras\n"
  33.        "%d!=%lu\n"
  34.        "%d!=%lu\n",i,i+1,difCifras,i,fact1,i+1,fact2);
  35.    else
  36.        printf("No se dispone de tanta capacidad de calculo.\n");
  37.    system("PAUSE");
  38.  
  39.    return 0;
  40. }
  41.  

Espero que sirva de algo!!

Un saludo!!!!!
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ejercicios básicos C# « 1 2 3 »
.NET (C#, VB.NET, ASP)
~~ 25 170,810 Último mensaje 4 Marzo 2016, 01:50 am
por nosky
EJERCICIOS BASICOS C++ « 1 2 »
Ejercicios
WiseHidden 13 42,501 Último mensaje 27 Mayo 2011, 05:26 am
por civans89
ejercicios basicos para recursividad en java « 1 2 3 »
Java
bengy 24 28,450 Último mensaje 27 Marzo 2012, 07:53 am
por xyiyox
Ejercicios básicos de programacion en Shell script...
Programación General
er_anyel 1 4,077 Último mensaje 8 Noviembre 2011, 10:59 am
por er_anyel
Ejercicios básicos de programacion en Shell script...
Ejercicios
er_anyel 5 9,965 Último mensaje 14 Abril 2012, 15:23 pm
por Stakewinner00
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines