[数论][枚举]leetcode479:最大回文数乘积

[数论][枚举]leetcode479:最大回文数乘积,第1张

题目:


题解:

思路:枚举


代码如下:

const int mod = 1337;
using LL = long long;
class Solution {
public:
    int largestPalindrome(int n) {
        if(n==1)return 9;
        int upper=pow(10,n)-1;
        // 从大到小地枚举回文数的左半部分
        for(int left=upper;;--left){
            LL p=left;
            // 翻转左半部分到其自身末尾,构造回文数 p
            for(int x=left;x>0;x/=10){
                p=p*10+x%10;
            }
            for(LL x=upper;x*x>=p;x--){
                if(p%x==0)// x是n位整数,且是p的因子,表明p就是最大回文整数
                    return p%mod;
            }
        }
        return -1;
    }
};

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/674261.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)

保存