Esempio n. 1
0
File: p209.c Progetto: mchalek/euler
int main(void) {
    int map[64];
    int i;

    for(i = 0; i < 64; i++) {
        map[i] = transform(i);
    }

    long result = 1;
    int n_cycles = 0;
    unsigned char cycle_ind[64];
    memset(cycle_ind, 0xff, sizeof(cycle_ind));
    for(i = 0; i < 64; i++) {
        if(cycle_ind[i] != 0xff)
            continue;

        int cycle_length = 1;
        cycle_ind[i] = (unsigned char) n_cycles;
        int j = map[i];
        printf("cycle %d: %2d => %2d", n_cycles, i, j);
        while(j != i) {
            cycle_length++;
            cycle_ind[j] = (unsigned char) n_cycles;
            j = map[j];
            printf(" => %2d", j);
        }

        long nseq = cycle_count(cycle_length);
        printf(" (length is %d, %ld valid sequences)\n", cycle_length, nseq);

        result *= nseq;

        n_cycles++;
    }

    printf("result: %ld\n", result);
    return 0;
}
Esempio n. 2
0
int max_cycle(int i, int j)
{
    int begin = 0;
    int end = 0;
    if (i > j) {
        begin = j;
        end = i;
    } else {
        begin = i;
        end = j;
    }

    int max = 0;
    int k = 0;
    for (k = begin; k < end + 1; k++) {
        int cycle = cycle_count(k);
        if (cycle > max) {
            max = cycle;
        }
    }

    return max;
}