Ver Mensaje Individual
Antiguo 29/12/2005, 01:20   #1443
Coke
Invitado
 
Mensajes: n/a

Cita:
Iniciado por anavic
Vaya hombre, este pensaba que tardaríais un poco más en sacarlo.

Efestiviwonder, es el único, el 381654729.

Todas las posibilidades eran ... todos los números formados por los dígitos del 1 al 9?
O sea...
9*8*7*6*5*4*3*2*1= 362.880 posibles combinaciones. Y mira que son muchas para un papel....
usando como regla que las posiciones 1, 3, 5, 7, y 9 por fuerza tienen que ser nones, ya que sólo tenemos 4 números pares y tienen que ser utilizados en las posiciones pares (2, 4, 6, 8). Si a eso le sumamos que la posición 5 tiene por fuerza que estar usada por el 5... sólo nos quedan...

4*4*3*3*1*2*2*1*1

O sea, 576 posibilidades.

Usé una hojita en xls para poner cada combinación, y después eliminar todas las opciones que no correspondían. Observé agradablemente como al llegar al 9, había 3 combinaciones que seguían la regla en cada divisor.

129654729
381654729
321654969

Pero al quitar los números que contenían dígitos repetidos... me he dado cuenta que sólo quedaba 1 posible solución.



Besotes.
uffff, yo como no tenia muchas ganas de pensar, me he hecho un pequeño y cutre pero efectivo algoritmo, que busca el numero ..., por si a alguien le interesa...

Código PHP:
void main()
{
    
bool Coke true;
    
int num[8];
    
srand(time(NULL));    
    while(
Coke) {    
        
int t rand()%9;
        for(
int e rand()%9== trand()%9);    
        for(
int g rand()%9== || == erand()%9);    
        for(
int y rand()%9== || == || == trand()%9);    
        for(
int s rand()%9== || == || == || == trand()%9);        
        for(
int b rand()%9== || == || == || == || == trand()%9);
        for(
int n rand()%9== || == || == || == || == || == trand()%9);
        for(
int z rand()%9== || == || == || == || == || == || == trand()%9);
        for(
int m rand()%9== || == || == || == || == || == || == || == trand()%9);
        
num[0] = 100000000 10000000 1000000 100000 10000 1000 100 10 m;
        
int p 9;
        
bool flag false;
        for(
int i 08i++) {
            if(
num[i]%== 0) {        
                if(
== 7
                    
flag true;
                else {
                    
num[1] = num[i]/10;
                    
p--;
                }
            }else
                break;
        }
        if(
flag) {
            
cout << "BINGO!!! se ha encontrado el numero "<<num[0]<<"\n"<<endl;
            break;
        }        
    }
    
system("pause");


Coke.

Última edición por Coke; 30/12/2005 a las 02:45.

Respuesta rápida a este mensaje
Responder Citando Subir