Ciao a tutti!
Ho la necessità di realizzare un programmino che mi calcoli il coefficiente binomiale di due numeri ( http://it.wikipedia.org/wiki/Coefficiente_binomiale ).
Il mio problema è che tipo di dato usare, visto che il fattoriale di un numero abbastanza basso, come per esempio 15 vale troppo!
15! = 1 307 674 368 000
Un intero non basta, un long int nemmeno...avete idee?
Intanto vi posto il codice se volete provare!
codice:
/***************************/
/*Inclusione delle librerie*/
/***************************/

#include <stdio.h>
#include <stdlib.h>

/******************************/
/*Dichiarazione delle funzioni*/
/******************************/
long int fattoriale(long int num);
int calcola_coeff_bin(int nodi_sottografo, int nodi);

/*********************************/
/*Definizione della funzione main*/
/*********************************/

int main()
{
    int n,k,ris;
    printf("Inserisci N...\n");
    scanf("%d", &n);
    printf("Inserisci K...\n");
    scanf("%d", &k);
    calcola_coeff_bin(k,n);
}

/***************************************/
/*Definizione della funzione fattoriale*/
/***************************************/
/*funzione che calcola il fattoriale di un numero*/
long int fattoriale(long int num)
{
    int fatt;
    
    if(num == 0)
        fatt = 1;
    else
        fatt = num * fattoriale (num - 1);
    return (fatt);
}


/**********************************************/
/*Definizione della funzione calcola_coeff_bin*/
/**********************************************/
/*funzione che calcola il coefficiente binomiale*/
int calcola_coeff_bin(int k, int n)
{
    int coefficiente,
        tmp1, tmp2, tmp3;
        

    tmp1 = fattoriale(n);
    printf("Fattoriale n: %d\n", tmp1);
    tmp2 = fattoriale(k);
    printf("Fattoriale k: %d\n", tmp2);
    tmp3 = fattoriale(n - k);
    printf("Fattoriale (n - k): %d\n", tmp3);
    coefficiente = tmp1/(tmp2 * tmp3);
    printf("Coefficiente binomiale: %d\n", coefficiente);
    return(coefficiente);
    
}