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

前端 未结 17 1347
天涯浪人
天涯浪人 2021-02-02 04:27
package testing.project;

public class PalindromeThreeDigits {

    public static void main(String[] args) {
        int value = 0;
        for(int i = 100;i <=999;i+         


        
17条回答
  •  南旧
    南旧 (楼主)
    2021-02-02 05:26

    You can try the following which prints

    999 * 979 * 989 = 967262769
    largest palindrome= 967262769 took 0.015
    

    public static void main(String... args) throws IOException, ParseException {
      long start = System.nanoTime();
      int largestPalindrome = 0;
      for (int i = 999; i > 100; i--) {
        LOOP:
        for (int j = i; j > 100; j--) {
          for (int k = j; k > 100; k++) {
            int n = i * j * k;
            if (n < largestPalindrome) continue LOOP;
            if (isPalindrome(n)) {
              System.out.println(i + " * " + j + " * " + k + " = " + n);
              largestPalindrome = n;
            }
          }
        }
      }
      long time = System.nanoTime() - start;
      System.out.printf("largest palindrome= %d took %.3f seconds%n", largestPalindrome, time / 1e9);
    }
    
    private static boolean isPalindrome(int n) {
      if (n >= 100 * 1000 * 1000) {
        // 9 digits
        return n % 10 == n / (100 * 1000 * 1000)
            && (n / 10 % 10) == (n / (10 * 1000 * 1000) % 10)
            && (n / 100 % 10) == (n / (1000 * 1000) % 10)
            && (n / 1000 % 10) == (n / (100 * 1000) % 10);
      } else if (n >= 10 * 1000 * 1000) {
        // 8 digits
        return n % 10 == n / (10 * 1000 * 1000)
            && (n / 10 % 10) == (n / (1000 * 1000) % 10)
            && (n / 100 % 10) == (n / (100 * 1000) % 10)
            && (n / 1000 % 10) == (n / (10 * 1000) % 10);
      } else if (n >= 1000 * 1000) {
        // 7 digits
        return n % 10 == n / (1000 * 1000)
            && (n / 10 % 10) == (n / (100 * 1000) % 10)
            && (n / 100 % 10) == (n / (10 * 1000) % 10);
      } else throw new AssertionError();
    }
    

提交回复
热议问题