fork download
  1. #include <iostream>
  2. #include <stack>
  3. using namespace std;
  4.  
  5. int main() {
  6. string s("10010001000100001111100010001000");
  7. // cin>>s;
  8. stack < char > data;
  9. stack < char > hexed;
  10. data.push('0');data.push('0');data.push('0');
  11. for(char a:s)data.push(a);
  12. while(data.size() > 3){
  13. switch(data.top()){
  14. case '0':
  15. data.pop();
  16. switch(data.top()){
  17. case '0':
  18. data.pop();
  19. switch(data.top()){
  20. case '0':
  21. data.pop();
  22. switch(data.top()){
  23. case '0': // 0000
  24. data.pop();
  25. hexed.push('0');
  26. break;
  27. case '1': // 1000
  28. data.pop();
  29. hexed.push('8');
  30. break;
  31. }
  32. break;
  33. case '1':
  34. data.pop();
  35. switch(data.top()){
  36. case '0': // 0100
  37. data.pop();
  38. hexed.push('4');
  39. break;
  40. case '1': // 1100
  41. data.pop();
  42. hexed.push('C');
  43. break;
  44. }
  45. break;
  46. }
  47. break;
  48. case '1':
  49. data.pop();
  50. switch(data.top()){
  51. case '0':
  52. data.pop();
  53. switch(data.top()){
  54. case '0': // 0010
  55. data.pop();
  56. hexed.push('2');
  57. break;
  58. case '1': // 1010
  59. data.pop();
  60. hexed.push('A');
  61. break;
  62. }
  63. break;
  64. case '1':
  65. data.pop();
  66. switch(data.top()){
  67. case '0': // 0110
  68. data.pop();
  69. hexed.push('6');
  70. break;
  71. case '1': // 1110
  72. data.pop();
  73. hexed.push('E');
  74. break;
  75. }
  76. break;
  77. }
  78. break;
  79. }
  80. break;
  81. case '1':
  82. data.pop();
  83. switch(data.top()){
  84. case '0':
  85. data.pop();
  86. switch(data.top()){
  87. case '0':
  88. data.pop();
  89. switch(data.top()){
  90. case '0': // 0001
  91. data.pop();
  92. hexed.push('1');
  93. break;
  94. case '1': // 1001
  95. data.pop();
  96. hexed.push('9');
  97. break;
  98. }
  99. break;
  100. case '1':
  101. data.pop();
  102. switch(data.top()){
  103. case '0': // 0101
  104. data.pop();
  105. hexed.push('5');
  106. break;
  107. case '1': // 1101
  108. data.pop();
  109. hexed.push('D');
  110. break;
  111. }
  112. break;
  113. }
  114. break;
  115. case '1':
  116. data.pop();
  117. switch(data.top()){
  118. case '0':
  119. data.pop();
  120. switch(data.top()){
  121. case '0': // 0011
  122. data.pop();
  123. hexed.push('3');
  124. break;
  125. case '1': // 1011
  126. data.pop();
  127. hexed.push('B');
  128. break;
  129. }
  130. break;
  131. case '1':
  132. data.pop();
  133. switch(data.top()){
  134. case '0': // 0111
  135. data.pop();
  136. hexed.push('7');
  137. break;
  138. case '1': // 1111
  139. data.pop();
  140. hexed.push('F');
  141. break;
  142. }
  143. break;
  144. }
  145. break;
  146. }
  147. break;
  148. }
  149. }
  150. while(hexed.size()){ cout<<hexed.top();hexed.pop(); }
  151.  
  152. //PS: Обработку остальных "цифр" не прописал - лень
  153. return 0;
  154. }
Success #stdin #stdout 0.01s 5424KB
stdin
Standard input is empty
stdout
9110F888