Project Euler – Solução do Exercício 4

“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.”


#include <stdio.h>
int inverte(int valor);
int main(void)
{
    int x;
    int y;
    int mult;               //produto de x por y
    int mult_invert;        //mult invertido
    int valor_maximo = 0;   //maior palíndromo calculado

    for(x=0 ; x<1000 ; x++)
        for(y=0; y<1000 ; y++)
        {
            mult = x * y;
            mult_invert = inverte(mult); //inverte o valor calculado
            if(mult == mult_invert)      //verifica se o número é um
                                         //palíndromo
                if (mult > valor_maximo) //verifica se o palíndromo
                                         //calculado é maior que o
                                         //palíndromo armazenado
                {
                    valor_maximo = mult; //substitui o palíndromo
                                         //armazenado
                }
        }

        printf("%d\n", valor_maximo);
        return 0;
}

int inverte(int valor)    //função que inverte um número
{
    int invertido = 0;
    while (valor !=0)
    {
        invertido *= 10;
        invertido += (valor%10);
        valor /= 10;
    }
    return invertido;
}

http://projecteuler.net

Anúncios
Tagged with: ,
Publicado em C, Programação, Project Euler

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s

%d bloggers like this: