Find the largest palindrome made from the product of two n-digit numbers.
Since the result could be very large, you should return the largest palindrome mod 1337.
Example:
Input: 2
Output: 987
Explanation: 99 x 91 = 9009, 9009 % 1337 = 987
class Solution {
public:
int largestPalindrome(int n) {
if (n == 1) {
return 9;
}
int upper = pow(10, n) - 1;
int lower = pow(10, n - 1);
for (int i = upper; i >= lower; i--) {
long tmp = build_palindrome(i);
for (long j = upper; j * j >= tmp; j--) {
if (tmp % j == 0 && tmp / j <= upper) {
return tmp % 1337;
}
}
}
return -1;
}
private:
long build_palindrome(int num) {
string tmp = to_string(num);
reverse(tmp.begin(), tmp.end());
return stol(to_string(num) + tmp);
}
};
注意 for循环里面的终止条件,同时产生palindrome的方式