Encontrar o maior palíndromo do produto de um problema de dois números de três dígitos

Assim, no Projeto Euler, oProblema 4 declara o seguinte:

Um número palíndrico lê da mesma maneira nos dois sentidos. O maior palíndromo produzido a partir do produto de dois números de dois dígitos é 9009 = 91 99.

Encontre o maior palíndromo produzido a partir do produto de dois números de 3 dígitos.

Eu tentei o seguinte:

    #include <stdio.h>
    #include <stdlib.h>

    int check(int result)
    {
        char b[7];
        sprintf(b, "%d", result);
        if (b[0] == b[5] && b[1] == b[4] && b[2] == b[3])
        {
            return 1;
        }
        else 
        {
            return 0;
        }
    }

    int main () {
        int i;
        int g;
        int final;
        for (i = 999; i > 99; i--)
        {
            for (g = 999; g > 99; g--)
            {
                if (check(g*i) == 1)
                {
                    final = g*i;
                    goto here;
                }
            }
        }
        here:
        printf("%d", final);
}

Mas isso não funciona. Em vez da resposta certa, recebo 580085, que acho que é um palíndromo, pelo menos, mas ainda não é a resposta certa.

Deixe-me explicar meu programa a partir deint main:

int i eint g são meus multiplicadores. São esses dois números de três dígitos.int final é o número que armazenará o maior palíndromo.Começo dois para loops que vão para baixo para obter todas as possibilidades numéricas.Saio do loop usando um goto quando o primeiro palíndromo é atingido (provavelmente não deveria, mas não afeta muito um programa pequeno como esse).O primeiro palíndromo deve ser o maior possível, já que estou fazendo uma contagem regressiva do topo.

Deixe-me agora explicar meu cheque:

Primeiro, uma vez que estes são dois números de três dígitos que se multiplicam para determinar o tamanho que um caractere precisaria para manter esse valor. Eu fui a uma calculadora e multipliquei 999 * 999 e acabou sendo 6, então eu preciso adicionar um porque achei de uma das perguntas que eu postei anteriormente quesprintf coloca um\0 personagem no final.Ok, agora que tenho um caractere e tudo, copieiresult (quali*g noint main) e coloque-ochar b[7].Então eu apenas verifiqueib para ver se ele se igualava codificando cada slot que eu precisava verificar.Então voltei de acordo, 1 para verdadeiro e 2 para falso.

Isso me parece perfeitamente lógico, mas não funciona por algum motivo estranho. Alguma dica?

questionAnswers(10)

yourAnswerToTheQuestion