Find the largest palindrome made from the product of two n-digitnumbers.git
Since the result could be very large, you should return thelargest palindrome mod 1337.函数
Example:spa
Input: 2字符串
Output: 987string
Explanation: 99 x 91 = 9009, 9009 % 1337 = 987it
Note:io
The range of n is [1,8].for循环
题目要求你求出两个长度为n的数相乘获得的最大的回文数,这题的主要知识点有:class
一个长度为(2n)的数只可能由两个(n+1)的数和(n)的数相乘获得,或者是(n)的数和(n)的数相乘,不多是由(n+1)和(n+1)相乘,也不多是由n和(n-1)相乘,循环
之后在作题的时候须要记得换一个角度思考,好比这题,要你求最大的回文数你除了能够乘数从小到大遍历,也能够从大到小遍历回文数,知道找到最大的回文数,判断回文数是否可以由两个长度为N的数相乘获得,一个for循环就行了
如何将字符串反转有三种方法,一种是使用string头文件的strrev函数,不过只能对c风格的字符串使用,一种是reverse,这个是algorithm头文件的一个函数,也可以反转,还有最后一种就是本身写一个反转的函数
class Solution {
public:
long longreverse(int num)
{
long long result=num;
while (num != 0)
{
result = result * 10 + num % 10;
num /= 10;
}
return result;
}
intlargestPalindrome(int n) {
if (n == 1) return 9;
long long temp=-1;
int upper = pow(10, n)-1;
for (int i = upper; i > upper / 10;i--)
{
temp = reverse(i);
for (int j = upper; j > upper /10; j--)
{
if (temp / j > j) break;
if (temp%j == 0)
goto theEnd;
}
}
theEnd:;
return temp % 1337;
}
};