Problem
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.
Code
#include <iostream>
using namespace std;
int xx(int x)
{
int result = 1;
for (int i = 1; i <= x; i++)
{
result *= 10;
}
return result;
}
int countPlace(int num)
{
for (int i = 7; i != 0; i--)
{
int place = xx(i);
if (num/xx(i) >= 1)
{
return i + 1;
}
}
}
bool isPalindromicNumber(int num)
{
int count = countPlace(num);
int midnum = count/2;
if (count%2 == 0)
{
for (int i = 0; i != midnum; i++)
{
int a = num/xx(midnum+i)%10;
int b = num/xx(midnum-i-1)%10;
if (a != b)
{
return false;
}
}
}
else
{
for (int i = 1; i <= midnum; i++)
{
int a = num/xx(midnum+i)%10;
int b = num/xx(midnum-i)%10;
if (a != b)
{
return false;
}
}
}
return true;
}
int main()
{
int max = 0;
int x;
int y;
for (int i = 999; i != 99; i--)
{
for (int j = 999; j != 99; j--)
{
if (isPalindromicNumber(i*j))
{
int result = i * j;
if (result > max)
{
max = result;
x = i;
y = j;
}
}
}
}
cout << max << endl;
cout << "x:" << x << ",y:" << y << endl;
}