Back to list of problems
Krypton Factor
129.c
#include <stdio.h> #include <string.h> int len; char seq[10000]; int hard(void) { int i,j; #if DEBUG printf("hard(%*.*s)", len, len, seq); #endif for (i=1; i<=len/2; i++) { for (j=0; j<=len-2*i; j++) { if (!strncmp(seq+j, seq+j+i, i)) { #if DEBUG printf(" = 0\n"); #endif return 0; } } } #if DEBUG printf(" = 1\n"); #endif return 1; } void new(int L) { int i; len++; for (i=0; i<L; i++) { seq[len-1] = 'A'+i; if (hard()) { return; } } while (1) { len--; while (seq[len-1] < 'A'+L-1) { seq[len-1]++; if (hard()) { return; } } } } int main(void) { int n,L,i; while (1) { scanf("%d %d", &n, &L); if (n==0 && L==0) { return 0; } len=0; for (i=0; i<n; i++) { new(L); } for (i=0; i<len; i++) { if (i) { if (i % 64 == 0) { printf("\n"); } else if (i % 4 == 0) { printf(" "); } } printf("%c", seq[i]); } printf("\n%d\n", len); } }