Untitled
By: a guest | Mar 14th, 2010 | Syntax:
Java | Size: 1.24 KB | Hits: 78 | Expires: Never
public class test
{
public static void main(String [] args)
{
long total = 0;
for (int i = 1; i < 1024; i++)
{
long l = Long.toBinaryString(i).length();
long f = FlipBits(i, l);
long n = (i << l) + f;
long n2 = (i << (l-1));
if ((f & (long)Math.pow(2, l-1)) != 0)
n2 += (f-(long)Math.pow(2, l-1));
else
n2 += f;
if (n > 1000000) break;
if (n == revDigits(n)) total += n;
if (n2 == revDigits(n2)) total += n2;
}
System.out.println("ANSWER: " + total);
}
public static long revDigits(long n)
{
long t = 0;
while (n > 0)
{
long f = n%10;
n -= f;
t += f;
n /= 10;
if (n > 0) t *= 10;
}
return t;
}
public static long FlipBits(long n, long l)
{
long a = 0;
for (long i = (l-1); i >= 0; --i) {
if ((n & (long)Math.pow(2, i)) != 0) {
a += Math.pow(2, ((l-i)-1));
}
}
return a;
}
}