fork(2) 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 set_bits(int* num, int numDigit) {
  22. *num = 1;
  23. for (int i = 1; i < numDigit; ++i)
  24. *num = *num << 1 | 1;
  25. }
  26.  
  27. void to0101(int numDigit) {
  28. // all 0
  29. for (int fist_01_pos = 0; fist_01_pos < numDigit - 1; ++fist_01_pos) {
  30. int mask = 0;
  31. mask |= (1 << fist_01_pos);
  32. for (int second_01_pos = 2 + fist_01_pos; second_01_pos < numDigit - 1; ++second_01_pos) {
  33. int result = mask;
  34. result |= (1 << second_01_pos);
  35. to_bin(result, numDigit);
  36. }
  37. }
  38.  
  39. // all 1 after right most 01
  40. for (int fist_01_pos = 0; fist_01_pos < numDigit - 1; ++fist_01_pos) {
  41. int mask = 0;
  42. set_bits(&mask, fist_01_pos);
  43. mask |= (1 << fist_01_pos);
  44. for (int second_01_pos = 2 + fist_01_pos; second_01_pos < numDigit - 1; ++second_01_pos) {
  45. int result = mask;
  46. result |= (1 << second_01_pos);
  47. to_bin(result, numDigit);
  48. }
  49. }
  50.  
  51. // all 1
  52. for (int fist_01_pos = 0; fist_01_pos < numDigit - 1; ++fist_01_pos) {
  53. int mask = 0;
  54. set_bits(&mask, numDigit);
  55. mask ^= (2 << fist_01_pos);
  56. for (int second_01_pos = 2 + fist_01_pos; second_01_pos < numDigit - 1; ++second_01_pos) {
  57. int result = mask;
  58. result ^= (2 << second_01_pos);
  59. to_bin(result, numDigit);
  60. }
  61. }
  62. }
  63.  
  64. int main() {
  65. std::cout << std::endl << "5 digits" << std::endl << std::endl;
  66. to0101(5);
  67. std::cout << std::endl << "10 digits" << std::endl << std::endl;
  68. to0101(10);
  69. std::cout << std::endl << "15 digits" << std::endl << std::endl;
  70. to0101(15);
  71. return 0;
  72. }
Success #stdin #stdout 0s 3460KB
stdin
Standard input is empty
stdout
5 digits

00101
01001
01010
00101
01001
01011
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
0000000101
0000001001
0000010001
0000100001
0001000001
0010000001
0100000001
0000001011
0000010011
0000100011
0001000011
0010000011
0100000011
0000010111
0000100111
0001000111
0010000111
0100000111
0000101111
0001001111
0010001111
0100001111
0001011111
0010011111
0100011111
0010111111
0100111111
0101111111
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
000000000000101
000000000001001
000000000010001
000000000100001
000000001000001
000000010000001
000000100000001
000001000000001
000010000000001
000100000000001
001000000000001
010000000000001
000000000001011
000000000010011
000000000100011
000000001000011
000000010000011
000000100000011
000001000000011
000010000000011
000100000000011
001000000000011
010000000000011
000000000010111
000000000100111
000000001000111
000000010000111
000000100000111
000001000000111
000010000000111
000100000000111
001000000000111
010000000000111
000000000101111
000000001001111
000000010001111
000000100001111
000001000001111
000010000001111
000100000001111
001000000001111
010000000001111
000000001011111
000000010011111
000000100011111
000001000011111
000010000011111
000100000011111
001000000011111
010000000011111
000000010111111
000000100111111
000001000111111
000010000111111
000100000111111
001000000111111
010000000111111
000000101111111
000001001111111
000010001111111
000100001111111
001000001111111
010000001111111
000001011111111
000010011111111
000100011111111
001000011111111
010000011111111
000010111111111
000100111111111
001000111111111
010000111111111
000101111111111
001001111111111
010001111111111
001011111111111
010011111111111
010111111111111
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