[Euler]Problem 36 - Double-base palindromes

来源:互联网 发布:自学编程入门教材 编辑:程序博客网 时间:2024/06/05 01:54

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.)


Brute Force!!!

public class Double_BasePalindromes {public static void main(String[] args) {long before = System.currentTimeMillis();new Double_BasePalindromes().calculate();System.out.println("elapsed time is : " + (System.currentTimeMillis() - before));}private void calculate() {String baseTwo = "";int sum = 0;for (int i = 1; i < 1000000; i++) {baseTwo = Integer.toBinaryString(i);if (isStringPalindromes(String.valueOf(i))) {if (isStringPalindromes(baseTwo)) {sum += i;}}}System.out.println("sum of all numbers is : " + sum);}private boolean isStringPalindromes(String str) {for (int i = 0; i <= str.length() / 2; i++) {if (str.charAt(i) != str.charAt(str.length() - 1 - i)) {return false;}}return true;}}

console : 
sum of all numbers is : 872187elapsed time is : 133