十进制数字585 = 10010010012 (二进制),可以看出在十进制和二进制下都是回文(从左向右读和从右向左读都一样)。
求100万以下所有在十进制和二进制下都是回文的数字之和。
(注意在两种进制下的数字都不包括最前面的0)
public class Problem36
{
public static void main(String[] args)
{
long start = System.currentTimeMillis();
System.out.print("answer: ");
howmany();
long end = System.currentTimeMillis();
System.out.print("time: ");
System.out.println(end - start);
}
static void howmany()
{
int sum = 0;
l1 : for (int i = 1; i < 1000000; i++)
{
char array[] = (i + "").toCharArray();
for (int j = 0; j < array.length; j++)
{
if (array[j] != array[array.length - 1 - j])
{
continue l1;
}
}
String i2 = Integer.toBinaryString(i);
char array2[] = i2.toCharArray();
for (int j = 0; j < array2.length; j++)
{
if (array2[j] != array2[array2.length - 1 - j])
{
continue l1;
}
}
sum += i;
}
System.out.println(sum);
}
}
answer: 872187
time: 208