#include <iostream>
#include <ctime>
bool IsPalindrome( int n )
{
int nCpy = n; // Copy of n
unsigned long r = 0; // n reverse
while( nCpy > 0 )
{
r = r * 10 + nCpy % 10;
nCpy /= 10;
}
return n == r;
}
int main( int argc, char* argv[] )
{
unsigned long largest = 0; // Largest palindrome
unsigned int i, j; // Loop counters
unsigned long p; // Product of i and j
int first, second; // Factors
clock_t t = clock(); // Timer
for( i=100; i < 1000; ++i )
{
for( j=100; j < 1000; ++j )
{
p = i * j;
if( IsPalindrome( p ) )
{
if( p > largest )
{
largest = p;
first = i;
second = j;
}
}
}
}
t = clock() - t;
std::cout << "The largest palindrome is " << largest;
std::cout << " (" << first << " x " << second << ")\n";
std::cout << "Time taken: " << static_cast<float>( t ) / CLOCKS_PER_SEC << " seconds\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3RpbWU+Cgpib29sIElzUGFsaW5kcm9tZSggaW50IG4gKQp7CiAgaW50IG5DcHkgPSBuOyAgICAgICAgIC8vIENvcHkgb2YgbgogIHVuc2lnbmVkIGxvbmcgciA9IDA7ICAvLyBuIHJldmVyc2UKCiAgd2hpbGUoIG5DcHkgPiAwICkKICB7CiAgICByID0gciAqIDEwICsgbkNweSAlIDEwOwogICAgbkNweSAvPSAxMDsKICB9CgogIHJldHVybiBuID09IHI7Cn0KCmludCBtYWluKCBpbnQgYXJnYywgY2hhciogYXJndltdICkKewogIHVuc2lnbmVkIGxvbmcgbGFyZ2VzdCA9IDA7ICAvLyBMYXJnZXN0IHBhbGluZHJvbWUKICB1bnNpZ25lZCBpbnQgaSwgajsgICAgICAgICAgLy8gTG9vcCBjb3VudGVycwogIHVuc2lnbmVkIGxvbmcgcDsgICAgICAgICAgICAvLyBQcm9kdWN0IG9mIGkgYW5kIGoKICBpbnQgZmlyc3QsIHNlY29uZDsgICAgICAgICAgLy8gRmFjdG9ycwogIGNsb2NrX3QgdCA9IGNsb2NrKCk7ICAgICAgICAvLyBUaW1lcgoKICBmb3IoIGk9MTAwOyBpIDwgMTAwMDsgKytpICkKICB7CiAgICBmb3IoIGo9MTAwOyBqIDwgMTAwMDsgKytqICkKICAgIHsKICAgICAgcCA9IGkgKiBqOwogICAgICBpZiggSXNQYWxpbmRyb21lKCBwICkgKQogICAgICB7CiAgICAgICAgaWYoIHAgPiBsYXJnZXN0ICkKICAgICAgICB7CiAgICAgICAgICBsYXJnZXN0ID0gcDsKICAgICAgICAgIGZpcnN0ICAgPSBpOwogICAgICAgICAgc2Vjb25kICA9IGo7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQoKICB0ID0gY2xvY2soKSAtIHQ7CiAgc3RkOjpjb3V0IDw8ICJUaGUgbGFyZ2VzdCBwYWxpbmRyb21lIGlzICIgPDwgbGFyZ2VzdDsKICBzdGQ6OmNvdXQgPDwgIiAoIiA8PCBmaXJzdCA8PCAiIHggIiA8PCBzZWNvbmQgPDwgIilcbiI7CiAgc3RkOjpjb3V0IDw8ICJUaW1lIHRha2VuOiAiIDw8IHN0YXRpY19jYXN0PGZsb2F0PiggdCApIC8gQ0xPQ0tTX1BFUl9TRUMgPDwgIiBzZWNvbmRzXG4iOwoKICByZXR1cm4gMDsKfQ==