fork download
  1. #include <stdio.h>
  2.  
  3. void ordinal_fill(int vec[], int N, int n, int k) {
  4. for (int i = 0; i < N; ++i) {
  5. int r = (k * n) % (N - i);
  6. if (r < n) {
  7. vec[i] = 1;
  8. k = (k * n) / (N - i);
  9. --n;
  10. } else {
  11. vec[i] = 0;
  12. k = (k * (N - n)) / (N - i);
  13. }
  14. }
  15. }
  16.  
  17. int main(void) {
  18. int N = 11, n = 3;
  19. int vec[N];
  20. int combs = 1;
  21. for (int i = 0; i < n; ++i) { combs *= N - i; combs /= i + 1; }
  22. for (int k = 0; k < combs; ++k) {
  23. ordinal_fill(vec, N, n, k);
  24. printf("%4d: ", k);
  25. for (int i = 0; i < N; ++i) putchar('0' + vec[i]);
  26. putchar('\n');
  27. }
  28. return 0;
  29. }
  30.  
Success #stdin #stdout 0s 2168KB
stdin
Standard input is empty
stdout
   0: 11100000000
   1: 01110000000
   2: 00111000000
   3: 00011100000
   4: 10110000000
   5: 00000000111
   6: 01000000101
   7: 00010000101
   8: 10000000101
   9: 00010000101
  10: 01000010010
  11: 10000010010
  12: 00100010010
  13: 00010010010
  14: 01000100010
  15: 10000100010
  16: 00001100010
  17: 00100100010
  18: 00010100010
  19: 11000000010
  20: 01010000010
  21: 00110000010
  22: 10100000010
  23: 00110000010
  24: 01100000010
  25: 00001001100
  26: 10000011000
  27: 00100101000
  28: 01000011000
  29: 00010101000
  30: 10001000100
  31: 00000010101
  32: 00100011000
  33: 10010000100
  34: 01001000100
  35: 00001011000
  36: 00001011000
  37: 11000000100
  38: 01010000100
  39: 00011000100
  40: 00000100110
  41: 10100000100
  42: 01100000100
  43: 00110000100
  44: 10001010000
  45: 00010010100
  46: 00000110100
  47: 01001010000
  48: 10000110000
  49: 00010001010
  50: 00010001010
  51: 01000110000
  52: 10010001000
  53: 00101010000
  54: 00010101000
  55: 11000001000
  56: 01010001000
  57: 00001101000
  58: 00100110000
  59: 10100001000
  60: 00011010000
  61: 01001001000
  62: 00110001000
  63: 10000011000
  64: 00110001000
  65: 01100001000
  66: 10010001000
  67: 00001000101
  68: 00101001000
  69: 01000011000
  70: 10000101000
  71: 00010000110
  72: 00000011001
  73: 00100010100
  74: 11000000001
  75: 01010001000
  76: 00000100110
  77: 10100000001
  78: 00000100110
  79: 01000101000
  80: 00010010100
  81: 10001100000
  82: 00000110001
  83: 01100000001
  84: 00110001000
  85: 10010000001
  86: 00010011000
  87: 00000110001
  88: 10000010100
  89: 01001100000
  90: 00010100010
  91: 00010100010
  92: 11000000010
  93: 01010000001
  94: 00100001100
  95: 00011001000
  96: 10100000010
  97: 01000010100
  98: 00001100010
  99: 10010000010
 100: 00101100000
 101: 00010101000
 102: 01000110000
 103: 10001000010
 104: 00110000001
 105: 00110000001
 106: 01100000010
 107: 10000010001
 108: 00000100110
 109: 00100010100
 110: 11001000000
 111: 01010000010
 112: 00011100000
 113: 00000000111
 114: 10101000000
 115: 00100110000
 116: 01001000010
 117: 00000100101
 118: 10011000000
 119: 00000100101
 120: 01000010001
 121: 10001010000
 122: 00010010100
 123: 00001100100
 124: 01101000000
 125: 10000101000
 126: 00110000010
 127: 00010110000
 128: 00000101100
 129: 11000001000
 130: 01011000000
 131: 00011000001
 132: 10100001000
 133: 00011000001
 134: 01001010000
 135: 00100010001
 136: 10000011000
 137: 00010100001
 138: 01000101000
 139: 00000001110
 140: 10000101000
 141: 00100001100
 142: 00010000110
 143: 10001001000
 144: 01000000110
 145: 00111000000
 146: 00111000000
 147: 11010000000
 148: 01100001000
 149: 00000110100
 150: 00101010000
 151: 10110000000
 152: 01000011000
 153: 00010010001
 154: 10000010010
 155: 00000110100
 156: 00100101000
 157: 01000101000
 158: 10001100000
 159: 00000101010
 160: 00000101010
 161: 01001001000
 162: 10000000110
 163: 00010100010
 164: 00001101000