zoukankan      html  css  js  c++  java
  • Java实现 LeetCode 479 最大回文数乘积

    479. 最大回文数乘积

    你需要找到由两个 n 位数的乘积组成的最大回文数。

    由于结果会很大,你只需返回最大回文数 mod 1337得到的结果。

    示例:

    输入: 2

    输出: 987

    解释: 99 x 91 = 9009, 9009 % 1337 = 987

    说明:

    n 的取值范围为 [1,8]。

    PS:

    举个例子:
    max = 99;
    从i= 98开始循环
    构造出回文数 rev = 9889
    对于 x = 99 ,rev不能整除,继续
    对于 x = 98 , 98 * 98 = 9604,小于rev,退出第二层循环
    ...
    ...
    直到i= 90
    构造出回文数9009
    
    class Solution {
          public int largestPalindrome(int n) {
            if(n == 1) return 9; 
            long max = (long)Math.pow(10,n) - 1; 
            for(long i = max - 1; i > max / 10; i--){ 
                String s1 = String.valueOf(i);
                long rev = Long.parseLong(s1 + new StringBuilder(s1).reverse().toString()); 
                for(long x = max; x * x >= rev; x --){
                    if(rev % x == 0) return (int)(rev % 1337);
                }
            }
            return -1;
        }
    }
    
  • 相关阅读:
    paper:Exploiting Query Reformulations for Web Search Result Diversification
    Z3
    IDA pro 类型参考
    Angr包含什么
    Gcc编译选项
    Angr
    一张图系列之PLT-GOT
    ELF头文件
    BROP_轮子
    Pwn_
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12946442.html
Copyright © 2011-2022 走看看