题目地址:
https://leetcode.com/problems/largest-palindrome-product/
给定一个正整数 1 ≤ n ≤ 8 1\le n\le 8 1≤n≤8,求最大的回文数 x x x使得 x x x能分解为两个 n n n位数的乘积。
直接暴力枚举即可。代码如下:
class Solution {
public:
int largestPalindrome(int n) {
if (n == 1) return 9;
int maxv = pow(10, n) - 1;
for (int i = maxv;; i--) {
auto a = to_string(i);
auto b = a;
reverse(b.begin(), b.end());
auto num = stoll(a + b);
for (long j = maxv; j * j >= num; j--)
if (num % j == 0) return num % 1337;
}
return 0;
}
};
时间复杂度 O ( 1 0 n ) O(10^n) O(10n),空间 O ( n ) O(n) O(n)。