leetcode479. Largest Palindrome Product

題目要求

Find the largest palindrome made from the product of two n-digit numbers.

Since the result could be very large, you should return the largest palindrome mod 1337.

**Example:**

Input: 2

Output: 987

Explanation: 99 x 91 = 9009, 9009 % 1337 = 987

**Note:**

The range of n is \[1,8\].

函數傳入整數n,要求計算出由n位數相乘得出的最大回數時多少。
比如n=2時,由兩位數相乘得出的最大回數爲9009=99*91,因爲可能回數過長,超過int的範圍,所以講結果對1337求餘後返回。

思路和代碼

這裏給出看到的一個解答,就是從大到小獲取所有可以構成的回數,並且對n位數從大到小的取餘。如果取餘的值爲0,則代表該回數是最大的回數。

    public int largestPalindrome(int n) {
        if(n == 1) return 9;
        int max = (int)Math.pow(10, n) - 1;
        for(int palindromePart = max - 1 ; palindromePart > max / 10 ; palindromePart--) {
            long palindrome = Long.valueOf(palindromePart + new StringBuilder().append(palindromePart).reverse().toString());
            for(long divided = max ; divided * divided >= palindrome ; divided--) {
                if(palindrome % divided == 0) {
                    return (int) (palindrome % 1337);
                }
            }
        }
        return 0;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章