using System;
public class Test
{
public static void Main()
{
int sum = 0;
sum += 1+3+5+7+9+33+99;
sum += threeDigOddPalindromes();
sum += fourDigOddPalindromes();
sum += fiveDigOddPalindromes();
sum += sixDigOddPalindromes();
Console.WriteLine(string.Format("sum of them all: {0}",sum));
}
private static string toBinary(int dec)
{
string s = "";
while(dec > 0)
{
s = "" + (dec % 2) + s;
dec = dec / 2;
}
return s;
}
private static bool isPalindrome(string s)
{
int low = 0;
int hi = s.Length - 1;
while(low < hi)
{
if(s[low] != s[hi])
{
return false;
}
low++;
hi--;
}
return true;
}
private static int threeDigOddPalindromes()
{
int sum = 0;
int output;
for(int outerDig = 1; outerDig < 10; outerDig+=2)
{
for(int i = 0; i < 10; i++)
{
output = outerDig*100 + i*10 + outerDig;
if(isPalindrome(toBinary(output)))
{
Console.WriteLine(string.Format("{0}:{1} - {2}", output,
toBinary(output), isPalindrome(toBinary(output))));
sum += output;
}
}
}
return sum;
}
private static int fourDigOddPalindromes()
{
int sum = 0;
int output;
for(int outerDig = 1; outerDig < 10; outerDig+=2)
{
for(int i = 0; i < 10; i++)
{
output = outerDig*1000 + i*100 + i*10 + outerDig;
if(isPalindrome(toBinary(output)))
{
Console.WriteLine(string.Format("{0}:{1} - {2}", output,
toBinary(output), isPalindrome(toBinary(output))));
sum+= output;
}
}
}
return sum;
}
private static int fiveDigOddPalindromes()
{
int sum = 0;
int output;
for(int outerDig = 1; outerDig < 10; outerDig+=2)
{
for(int i = 0; i < 10; i++)
{
for(int j=0; j < 10; j++)
{
output = outerDig*10000 + i*1000 + j*100 + i*10 + outerDig;
if(isPalindrome(toBinary(output)))
{
Console.WriteLine(string.Format("{0}:{1} - {2}", output,
toBinary(output), isPalindrome(toBinary(output))));
sum += output;
}
}
}
}
return sum;
}
private static int sixDigOddPalindromes()
{
int sum = 0;
int output;
for(int outerDig = 1; outerDig < 10; outerDig+=2)
{
for(int i = 0; i < 10; i++)
{
for(int j=0; j < 10; j++)
{
output = outerDig*100000 + i*10000 + j*1000 + j*100 + i*10 + outerDig;
if(isPalindrome(toBinary(output)))
{
Console.WriteLine(string.Format("{0}:{1} - {2}", output,
toBinary(output), isPalindrome(toBinary(output))));
sum += output;
}
}
}
}
return sum;
}
}