4 - largest palindrome product

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.

link

cevap: 906609

#include <stdio.h>
#include <math.h>
#pragma hdrstop
#include <tchar.h>

// global degiskenler
unsigned int carpim;
unsigned char terslendi = 0;  // todo : bunun ismini degistir
unsigned int basamak_sayisi;
unsigned int mod;
unsigned int carpan_1;
unsigned int carpan_2;
unsigned int *basamaklar;

// fonksiyon prototipleri
void carpma();
unsigned char tersleniyormu(unsigned int);
unsigned int basamak_sayisi_hesapla(unsigned int);

#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
    carpma();

    system("pause");
}

void carpma()
{
    for (carpan_1 = 100; carpan_1 < 1000; carpan_1++) {
        for (carpan_2 = 100; carpan_2 < 1000; carpan_2++) {

            carpim = carpan_1 * carpan_2;
            terslendi = tersleniyormu(carpim);

            // tum terslenen sayilari ekrana bas
            if (!terslendi) {
                printf("terslenebilen carpimlar = %d\n",carpim);
            }
        }
    }

    return carpim;
}

unsigned char tersleniyormu(unsigned int carpim)
{
    unsigned int i;

    basamak_sayisi = basamak_sayisi_hesapla(carpim);

    basamaklar = (unsigned int *) calloc(basamak_sayisi, sizeof(unsigned int));

    for (i = 0; i < basamak_sayisi; i++) {
        mod = fmod(carpim, 10);
        carpim = carpim/10;
        basamaklar[i] = mod;
    }

    terslendi = basamak_sayisi/2;

    for (i = 0; i < (basamak_sayisi/2); i++) {
        if (basamaklar[basamak_sayisi-i-1] == basamaklar[i]) {
            terslendi = terslendi - 1;
        }
    }

    return terslendi;
}

unsigned int basamak_sayisi_hesapla(unsigned int sayi)
{
    float log_f;
    unsigned int log_i;

    log_f = log10(sayi); // float logaritma
    log_i = floor(log_f); // integer logaritma

    basamak_sayisi = log_i + 1;

    return basamak_sayisi;
}