post
poster: psYchotic
description: revised howmany() incomplete
language: C
[download]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
mpz_t *howmany(int num) {
    int *bf;
    int i;
    mpz_t *ret = malloc(sizeof(mpz_t));
    mpz_init(*ret);
    mpz_add_ui(*ret, *ret, 1);
    mpz_t temp;
    mpz_init(temp);
    for (i = 1; i <= num; i++) {
        bf = calloc(i+1, sizeof(int));
        bf[i] = -1;
        while (!ended(bf)) {
            if (valid_bf(bf)) {
                mpz_ui_pow_ui(temp, 6, num-i);
                mpz_add(*ret, *ret, temp);
            }
            incr(bf);
        }
        free(bf);
    }

    return ret;
}