1 votos

Project euler - Problema 4 (Ayuda)

Hola a todos necesito su ayuda , Quisiera saber porque el algoritmo que hice no me da la respuesta correcta :

Este es el enunciado :

A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.

Find the largest palindrome made from the product of two 3-digit numbers.

Este es mi codigo hecho en c++ (recien estoy aprendiendo): ` #include <iostream> using namespace std;

int main(){
    int numero;
    int prueba;

    long a,b,c,d,e,f;
    long mayor;
    long asd;

  for(numero = 10000; numero < 998002; numero++){//for
            if(numero > 9999 && numero < 100000 ){ // primer if si es que el numeor es de 5 cifras

            f = numero %10;

            e  = (((numero % 100) - f) / 10);

            d = ((((numero % 1000) - f) - e) /100);

            c = (((((numero % 10000) - f )- e ) - d ) /1000);

            b = ((((((numero % 100000) - f) -e )  -d)  -c) / 10000);

            mayor = b * 10000 + c * 1000 + d * 100 + e * 10 + f;

              asd = f * 10000 + e * 1000 + d * 100 + c * 10 + b ;
              cout << mayor << " " << asd << endl;
              if ( mayor == asd){ // if del primer mayor == asd
                cout << "este numero es capicua " << endl;
              } // fin del primer mayor

            } // fin del primer if 

            else{ // segundo if si el numero es mayor a 5 cifras

            f = numero %10;

            e  = (((numero % 100) - f) / 10);

            d = ((((numero % 1000) - f) - e) /100);

            c = (((((numero % 10000) - f )- e ) - d ) /1000);

            b = ((((((numero % 100000) - f) -e )  -d)  -c) / 10000);

            a = ((((((numero % 1000000) - f) - e) - d) - c) / 100000);

            mayor = a * 100000 + b * 10000 + c * 1000 + d * 100 + e * 10 + f;
              asd = f * 100000 + e * 10000 + d * 1000 + c * 100 + b * 10 + a;

              if(mayor == asd){//if de mayor
                cout << mayor << " " << asd << endl;
                cout << "this numero is palondric" << endl;
              }//fin if amyor

        }// fin del segundo if para cifras mayores a 5

            }//fin del for              
        }
    `

el código me dice que el numero capicua mas grande es 997799 , Pero cuando yo multiplico

Si el for es hasta 998002 es porque al multiplicar los dos números mas grandes de 3 cifras el resultado me da = 998001 por lo cual no tendría sentido irme hasta el 1000000, Muchas gracias por su tiempo :p PD: busque que el programa me arroje todos los números , no solo el mayor; Pero podría encontrar al mayor viendo la consola la ultima racionero. Buenas noches.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X