s.c (704B)
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <stdint.h> 5 6 int solve() 7 { 8 uint16_t labels[3] = {1,3,2}; 9 uint32_t n; 10 uint32_t i; 11 char *buf; 12 char *p; 13 14 scanf("%d", &n); 15 16 buf = malloc(sizeof(char) * 262146); 17 p = buf; 18 19 if (n % 2) { 20 labels[1] ^= labels[2]; 21 labels[2] ^= labels[1]; 22 labels[1] ^= labels[2]; 23 } 24 25 labels[0] += '0'; 26 labels[1] += '0'; 27 labels[2] += '0'; 28 29 p += sprintf(p, "%d\n", (1 << n) - 1); 30 memset_pattern4(p, "x x\n", 262146 - (p - buf)); 31 32 for (i = 1; i < 1 << n; i++) { 33 *p = labels[((i & i - 1) % 3)]; 34 p+=2; 35 *p = labels[(((i | i - 1) + 1) % 3)]; 36 p+=2; 37 } 38 39 *p = '\0'; 40 41 puts(buf); 42 43 return 0; 44 } 45 46 int main() 47 { 48 int t = 1; 49 while (t--) 50 solve(); 51 }