project euler 36

来源:互联网 发布:软件升级服务 增值税 编辑:程序博客网 时间:2024/06/05 00:44

Problem 36


Double-base palindromes

The decimal number, 585 = 10010010012 (binary), is palindromic in both bases.

Find the sum of all numbers, less than one million, which are palindromic in base 10 and base 2.

(Please note that the palindromic number, in either base, may not include leading zeros.)


双进制回文数

十进制数585 = 10010010012(二进制表示),因此它在这两种进制下都是回文数。

找出所有小于一百万,且在十进制和二进制下均回文的数,并求它们的和。

(请注意,无论在哪种进制下,回文数均不考虑前导零。)

@Testpublic void test(){System.out.println(calculate(1000000));}public static long calculate(int upLimit){long sum  = 0;for( int i  = 1; i <= upLimit; i ++){if( isPalindromic( String.valueOf(i)) && isPalindromic( Integer.toBinaryString(i))){sum += i;System.out.println(i);}}return sum;}public static boolean isPalindromic(String val){char [] arr = new char[ val.length()];val.getChars(0, arr.length, arr, 0);for( int i = 0 ; i <= arr.length / 2; i ++){if( arr[i] != arr[ arr.length - 1 - i]){return false;}}return true;}


0 0