2016-03-28 22 views
0
/* 
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. 
*/ 


class Pro4 
{ 
    int palindrome(int x) 
    { 
     int n=x,rev=0; 
     while(n!=0) 
      { 
        rev=rev*10+n%10; 
        n=n/10; 
       } 
      if(x==rev) 
        return x; 
      else 
        return 0; 
     } 
     public static void main(String args[]) 
     { 
       int lar=0,i=0,j=0,x,k=100,l=100; 
       Pro4 obj=new Pro4(); 
       for(i=100;i<=999;i++) 
         for(j=100;j<=999;j++) 
         { 
           x=obj.palindrome(i*j); 
          if(x!=0) 
          { 
            lar=x; 
            k=i; 
            l=j; 
           } 
         } 
       System.out.println(lar+","+k+","+l);  

     } 
} 
+1

只需在'999'處開始兩個值並向下迭代;第一個迴文數將是最大的。 –

+0

什麼阻止你調試你自己的代碼? – Raedwald

+0

[什麼是調試器,它如何幫助我診斷問題]可能的重複(http://stackoverflow.com/questions/25385173/what-is-a-debugger-and-how-can-it-help-me -diagnose-problems) – Raedwald

回答

0

請不要按照你的代碼更改,

if(x != 0 && x>lar) 
{ 
    lar=x; 
    k=i; 
    l=j; 
} 

輸出:

906609,913,993 

更新:

到以前的代碼只包含X!= 0的條件,

906609迴文成爲I = 913,J = 993, 然後再下一個580085迴文出現到兩位數範圍內i = 995, j = 583

那麼,一旦913,993(which gives 906609)處理得到的應答條件就會代替995,583(which gives 580085)這就是爲什麼tou得到了580085

+0

好的,但即使我沒有添加x> lar,那麼我應該得到906609.爲什麼我沒有得到呢?你能解釋爲什麼它會有所不同嗎? –

+0

錯誤的值580085必須出現在906609之後,這就是爲什麼它會覆蓋我們的正確答案。 –

+0

現在我明白了:D! –

相關問題