http://www.geeksforgeeks.org/largest-palindrome-product-two-n-digit-numbers/
http://www.geeksforgeeks.org/largest-palindrome-product-two-n-digit-numbers/
Given a value n, find out the largest palindrome number which is product of two n digit numbers.
Below are steps to find the required number.
1) Find a lower limit on n digit numbers. For example, for n = 2, lower_limit is 10.
2) Find an upper limit on n digit numbers. For example, for n = 2, upper_limit is 99.
3) Consider all pairs of numbers where ever number lies in range [lower_limit, upper_limit]
1) Find a lower limit on n digit numbers. For example, for n = 2, lower_limit is 10.
2) Find an upper limit on n digit numbers. For example, for n = 2, upper_limit is 99.
3) Consider all pairs of numbers where ever number lies in range [lower_limit, upper_limit]
int larrgestPalindrome(int n){ int upper_limit = 0; /* Loop to calculate upper bound(largest number of n-digit)*/ for (int i=1; i<=n; i++) { upper_limit *= 10; upper_limit += 9; } // largest number of n-1 digit. One plus this number // is lower limit which is product of two numbers. int lower_limit = 1 + upper_limit/10; int max_product = 0; // Initialize result for (int i=upper_limit; i>=lower_limit; i--) { for (int j=i; j>=lower_limit; j--) { // calculating product of two n-digit numbers int product = i * j; if (product < max_product) break; int number = product; int reverse = 0; /* calculating reverse of product to check whether it is palindrome or not*/ while (number != 0) { reverse = reverse * 10 + number % 10; number /= 10; } /* update new product if exist and if greater than previous one*/ if (product == reverse && product > max_product) max_product = product; } } return max_product;}