fork(5) download
  1. #include <iostream>
  2. #include <cmath>
  3. #include <vector>
  4.  
  5. void _to_bin(int num, std::vector<int> * out) {
  6. if (num / 2)
  7. _to_bin(num/2, out);
  8. out->push_back(num % 2);
  9. }
  10.  
  11. void to_bin(int num, int numDigit) {
  12. std::vector<int> out;
  13. _to_bin(num, &out);
  14. for(int i = 0; i < numDigit - out.size(); ++i)
  15. std::cout << 0;
  16. for(int i = 0; i < out.size(); ++i)
  17. std::cout << out.at(i);
  18. std::cout << std::endl;
  19. }
  20.  
  21. void to0101(int numDigit) {
  22. // all 0
  23. for(int fist_01_pos = 0; fist_01_pos < numDigit - 1; ++fist_01_pos) {
  24. int mask = 0;
  25. mask |= (1 << fist_01_pos);
  26. for(int second_01_pos = 2 + fist_01_pos; second_01_pos < numDigit - 1; ++second_01_pos) {
  27. int result = mask;
  28. result |= (1 << second_01_pos);
  29. to_bin(result, numDigit);
  30. }
  31. }
  32.  
  33. // all 1
  34. for(int fist_01_pos = 0; fist_01_pos < numDigit - 1; ++fist_01_pos) {
  35. // slow but short code to get all bits set to 1
  36. int mask = (int)pow(2,numDigit) - 1;
  37. mask ^= (2 << fist_01_pos);
  38. for(int second_01_pos = 2 + fist_01_pos; second_01_pos < numDigit - 1; ++second_01_pos) {
  39. int result = mask;
  40. result ^= (2 << second_01_pos);
  41. to_bin(result, numDigit);
  42. }
  43. }
  44. }
  45.  
  46. int main() {
  47. std::cout << std::endl << "5 digits" << std::endl << std::endl;
  48. to0101(5);
  49. std::cout << std::endl << "10 digits" << std::endl << std::endl;
  50. to0101(10);
  51. std::cout << std::endl << "15 digits" << std::endl << std::endl;
  52. to0101(15);
  53. return 0;
  54. }
  55.  
Success #stdin #stdout 0s 3416KB
stdin
Standard input is empty
stdout
5 digits

00101
01001
01010
10101
01101
01011

10 digits

0000000101
0000001001
0000010001
0000100001
0001000001
0010000001
0100000001
0000001010
0000010010
0000100010
0001000010
0010000010
0100000010
0000010100
0000100100
0001000100
0010000100
0100000100
0000101000
0001001000
0010001000
0100001000
0001010000
0010010000
0100010000
0010100000
0100100000
0101000000
1111110101
1111101101
1111011101
1110111101
1101111101
1011111101
0111111101
1111101011
1111011011
1110111011
1101111011
1011111011
0111111011
1111010111
1110110111
1101110111
1011110111
0111110111
1110101111
1101101111
1011101111
0111101111
1101011111
1011011111
0111011111
1010111111
0110111111
0101111111

15 digits

000000000000101
000000000001001
000000000010001
000000000100001
000000001000001
000000010000001
000000100000001
000001000000001
000010000000001
000100000000001
001000000000001
010000000000001
000000000001010
000000000010010
000000000100010
000000001000010
000000010000010
000000100000010
000001000000010
000010000000010
000100000000010
001000000000010
010000000000010
000000000010100
000000000100100
000000001000100
000000010000100
000000100000100
000001000000100
000010000000100
000100000000100
001000000000100
010000000000100
000000000101000
000000001001000
000000010001000
000000100001000
000001000001000
000010000001000
000100000001000
001000000001000
010000000001000
000000001010000
000000010010000
000000100010000
000001000010000
000010000010000
000100000010000
001000000010000
010000000010000
000000010100000
000000100100000
000001000100000
000010000100000
000100000100000
001000000100000
010000000100000
000000101000000
000001001000000
000010001000000
000100001000000
001000001000000
010000001000000
000001010000000
000010010000000
000100010000000
001000010000000
010000010000000
000010100000000
000100100000000
001000100000000
010000100000000
000101000000000
001001000000000
010001000000000
001010000000000
010010000000000
010100000000000
111111111110101
111111111101101
111111111011101
111111110111101
111111101111101
111111011111101
111110111111101
111101111111101
111011111111101
110111111111101
101111111111101
011111111111101
111111111101011
111111111011011
111111110111011
111111101111011
111111011111011
111110111111011
111101111111011
111011111111011
110111111111011
101111111111011
011111111111011
111111111010111
111111110110111
111111101110111
111111011110111
111110111110111
111101111110111
111011111110111
110111111110111
101111111110111
011111111110111
111111110101111
111111101101111
111111011101111
111110111101111
111101111101111
111011111101111
110111111101111
101111111101111
011111111101111
111111101011111
111111011011111
111110111011111
111101111011111
111011111011111
110111111011111
101111111011111
011111111011111
111111010111111
111110110111111
111101110111111
111011110111111
110111110111111
101111110111111
011111110111111
111110101111111
111101101111111
111011101111111
110111101111111
101111101111111
011111101111111
111101011111111
111011011111111
110111011111111
101111011111111
011111011111111
111010111111111
110110111111111
101110111111111
011110111111111
110101111111111
101101111111111
011101111111111
101011111111111
011011111111111
010111111111111