2014-11-02 7 views
-4

좋아요. 그래서이 문제를 해결하는 방법에 대해 잘 모릅니다! 베이스 10과베이스 2 모두에서 1 백만 미만의 모든 숫자를 검색하는 코드를 작성해야합니다.Java : 양쪽베이스의 Palindrome

누군가가이 문제를 시작하도록 도와 줄 수 있습니까?

+0

기본 10에 문장을 생성합니다. 기본 2에 문장을 생성하십시오. 기본 10으로 변환하고, 합계하십시오. 2 개의 합계를 더하십시오. – Deltharis

+2

먼저 읽어야 할 사항 : [질문하는 방법] –

+0

@Deltharis 분명히 틀렸어. OP : 무엇이 문제인가? 1 백만 미만의 모든 숫자에 대해 반복하십시오. 회유 염기베이스를 확인하십시오 10. 회귀 염기베이스를 확인하십시오 2. 모두 만족되면 누적기를 추가하십시오. – maaartinus

답변

0

그 해결책은 꽤나 앞으로의 일입니다. 1M 이상의 모든 회상 숫자에 대한 방증입니다.

public class Main { 


    public static void main(String[] args) { 

     int count=0; 
     for (int i = 0; i < 1_000_000; i++) { 
      if (isDoublePalindrome(""+i)) { 
       count+=i; 
      } 
     } 

     System.out.println(count); 

    } 

    public static boolean isPalindrome(String N){ 
     return new StringBuilder(N).reverse().toString().equals(""+N); 
    } 

    public static String toBinary(String N){ 

     return Long.toBinaryString(Long.parseLong(N)); 
    } 

    public static boolean isDoublePalindrome(String N){ 

     if(isPalindrome(N) && isPalindrome(toBinary(N))) return true; 
     return false; 
    } 

} 
0

나머지는 여기까지입니다,하지만은 int 주어진 자료의 회문인지 여부를 알려주는 방법이다; 인수가 정확하다고 가정합니다. 즉, 검사 할 숫자가> 0이고 기수가> 0입니다.

public static isPalindromInBase(final int before, final int base) 
{ 
    int after = 0; 

    for (int i = before; i > 0; i /= base) { 
     after += i % base; 
     after *= base; 
    } 

    return before == after; 
}