fork download
  1. using System;
  2.  
  3. public class Test
  4. {
  5. public static void Main()
  6. {
  7. int sum = 0;
  8. sum += 1+3+5+7+9+33+99;
  9. sum += threeDigOddPalindromes();
  10. sum += fourDigOddPalindromes();
  11. sum += fiveDigOddPalindromes();
  12. sum += sixDigOddPalindromes();
  13. Console.WriteLine(string.Format("sum of them all: {0}",sum));
  14. }
  15.  
  16. private static string toBinary(int dec)
  17. {
  18. string s = "";
  19. while(dec > 0)
  20. {
  21. s = "" + (dec % 2) + s;
  22. dec = dec / 2;
  23. }
  24. return s;
  25. }
  26.  
  27. private static bool isPalindrome(string s)
  28. {
  29. int low = 0;
  30. int hi = s.Length - 1;
  31. while(low < hi)
  32. {
  33. if(s[low] != s[hi])
  34. {
  35. return false;
  36. }
  37. low++;
  38. hi--;
  39. }
  40. return true;
  41. }
  42.  
  43. private static int threeDigOddPalindromes()
  44. {
  45. int sum = 0;
  46. int output;
  47. for(int outerDig = 1; outerDig < 10; outerDig+=2)
  48. {
  49. for(int i = 0; i < 10; i++)
  50. {
  51. output = outerDig*100 + i*10 + outerDig;
  52. if(isPalindrome(toBinary(output)))
  53. {
  54. Console.WriteLine(string.Format("{0}:{1} - {2}", output,
  55. toBinary(output), isPalindrome(toBinary(output))));
  56. sum += output;
  57. }
  58. }
  59. }
  60. return sum;
  61. }
  62.  
  63. private static int fourDigOddPalindromes()
  64. {
  65. int sum = 0;
  66. int output;
  67. for(int outerDig = 1; outerDig < 10; outerDig+=2)
  68. {
  69. for(int i = 0; i < 10; i++)
  70. {
  71. output = outerDig*1000 + i*100 + i*10 + outerDig;
  72. if(isPalindrome(toBinary(output)))
  73. {
  74. Console.WriteLine(string.Format("{0}:{1} - {2}", output,
  75. toBinary(output), isPalindrome(toBinary(output))));
  76. sum+= output;
  77. }
  78. }
  79. }
  80. return sum;
  81. }
  82.  
  83. private static int fiveDigOddPalindromes()
  84. {
  85. int sum = 0;
  86. int output;
  87. for(int outerDig = 1; outerDig < 10; outerDig+=2)
  88. {
  89. for(int i = 0; i < 10; i++)
  90. {
  91. for(int j=0; j < 10; j++)
  92. {
  93. output = outerDig*10000 + i*1000 + j*100 + i*10 + outerDig;
  94. if(isPalindrome(toBinary(output)))
  95. {
  96. Console.WriteLine(string.Format("{0}:{1} - {2}", output,
  97. toBinary(output), isPalindrome(toBinary(output))));
  98. sum += output;
  99. }
  100. }
  101. }
  102. }
  103. return sum;
  104. }
  105.  
  106. private static int sixDigOddPalindromes()
  107. {
  108. int sum = 0;
  109. int output;
  110. for(int outerDig = 1; outerDig < 10; outerDig+=2)
  111. {
  112. for(int i = 0; i < 10; i++)
  113. {
  114. for(int j=0; j < 10; j++)
  115. {
  116. output = outerDig*100000 + i*10000 + j*1000 + j*100 + i*10 + outerDig;
  117. if(isPalindrome(toBinary(output)))
  118. {
  119. Console.WriteLine(string.Format("{0}:{1} - {2}", output,
  120. toBinary(output), isPalindrome(toBinary(output))));
  121. sum += output;
  122. }
  123. }
  124. }
  125. }
  126. return sum;
  127. }
  128. }
Success #stdin #stdout 0.02s 131648KB
stdin
Standard input is empty
stdout
313:100111001 - True
585:1001001001 - True
717:1011001101 - True
7447:1110100010111 - True
9009:10001100110001 - True
15351:11101111110111 - True
32223:111110111011111 - True
39993:1001110000111001 - True
53235:1100111111110011 - True
53835:1101001001001011 - True
73737:10010000000001001 - True
585585:10001110111101110001 - True
sum of them all: 872187