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;
}
|