最大回文数乘积
今天在力扣做了一个题目,感觉很难得题目看了别人的思路很简单就做了出来,跟大家分享一下
给定一个整数 n ,返回 可表示为两个 n 位整数乘积的 最大回文整数 。因为答案可能非常大,所以返回它对 1337 取余 。
题解思路如下:
我们从给定n的最大回文整数开始遍历,找到可以被整数的最大回文整数
题目最难的地方在于如何进行回文整数的遍历,这里给出我查找资料得到的很棒的一段代码:
while(temp){
sum=sum*10+temp%10;
temp/=10;
}
全部代码则如下所示:
int largestPalindrome(int n){
if(n==1) return 9;
long long max=pow(10,n)-1;
long long min=pow(10,n-1);
long long i,j;
for(i=max;i>=min;i--){
long long sum=i,temp=i;
while(temp){
sum=sum*10+temp%10;
temp/=10;
}
for (j=max;j*j>=sum;--j)
if (sum%j==0)
return sum%1337;
}
return n;
}
题目看着很难,但是解题思路明确了还是很轻松的