Saturday, October 18, 2014

Largest palindrome product

Ques:
A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.
Find the largest palindrome made from the product of two 3-digit numbers.
Ans:
 This can be achieved in 2 differnet ways..
Ist: Declare as wrapper class integer
Convert to String
Use tochar to seperate the digits
Read them backwards
convert back to Int and get answer

I have used basics of math to arrive at solution.
Extract the digits using maths fundamentals
store them in variables.
re-arrange them using Maths fundamentals.

AND YOU HAVE THE ANSWER.
 ==========================

Package palindrome;

public class Palindrome {

  
    public static void main(String[] args) {
          int mult = 906609;
        for (int i = 100; i < 1000; i++) {
            for (int j = 100; j < 1000; j++) {
                mult = i * j;
                      if (mult - placeholdervalue(mult) == 0) {
                    System.out.println("Original number=" + mult + " and its palindrome=" + placeholdervalue(mult));
                    System.out.println("i=" + i + "j=" + j);
                }
            }

                   }
    }

    public static int placeholdervalue(int num) {

        int var0 = 0, var, var1, var2, var3, var4, var5, var6;
        var = num / 10000;

        if (var >= 10) {
            var0 = num / 100000;
            var = (num - var0 * 100000) / 10000;
        }
        var1 = (num - var * 10000 - var0 * 100000) / 1000;
        var2 = (num - var * 10000 - var0 * 100000 - var1 * 1000) / 100;
        var3 = (num - var * 10000 - var0 * 100000 - var1 * 1000 - var2 * 100) / 10;
        var4 = (num - var * 10000 - var0 * 100000 - var1 * 1000 - var2 * 100 - var3 * 10);
     
              var5 = var4 * (var0 > 0 ? 100000 : 10000);
        var5 = var5 + var3 * (var0 > 0 ? 10000 : 1000);
        var5 = var5 + var2 * (var0 > 0 ? 1000 : 100);
        var5 = var5 + var1 * (var0 > 0 ? 100 : 10);
        var5 = var5 + var * (var0 > 0 ? 10 : 1);
        var5 = var5 + var0;
        return var5;
    }

No comments:

Post a Comment