4 votos

División factorial usando el triángulo de Pascal.

Quiero obtener los valores de factorial divisiones tales como 100!/(2!5!60!)(los números en el denominador a todos ser menor que el numerador, y la suma de los denominadores(números sin factorial) puede ser con un máximo de 100), etc.

He leído en un foro que un triángulo de Pascal puede ser utilizado para el cálculo de tales resultados, pero de mucho buscar no me dijo cómo hacerlo.

En realidad, es un problema de programación, y he intentado utilizar la lgamma función para calcular el valor, sino que da un error como tengo un montón de precisión.

Entonces, ¿qué podría ser utilizado para calcular dichos factorial de divisiones?

11voto

Joel Cohen Puntos 5508

Puede expresarlos en términos de coeficientes binomiales y factoriales.

ps

Por ejemplo

ps

O más en general, si$$\binom{n}{k} = \frac{n!}{k! (n-k)!}$ y$$\frac{100!}{60! 5! 2!} = \frac{100!}{60! 40!} \cdot \frac{40!}{5! 35!} \cdot \frac{35!}{2! 33!} \cdot 33! = \binom{100}{60} \cdot \binom{40}{5} \cdot \binom{35}{2} \cdot 33!$, tenemos

ps

Y los coeficientes binomiales se calculan fácilmente (sin división) usando la relación triangular de Pascal.

0voto

ianbeks Puntos 138
int fac[tot+1];
        fac[0]=fac[1]=1;
        for(i=2;i<=tot;i++)
        fac[i]=i;
        for(i=0;i<26;i++)
        {
            if(num[i]>1)
            {
                for(j=2;j<=num[i];j++)
                {
                    for(k=j;k<=tot;k=k+j)
                    {
                        if(fac[k]%j==0)
                        {
                            fac[k]=k/j;
                            break;
                        }
                    }
                }
            }
        }
        unsigned long long ans=1;
        for(i=2;i<=tot;i++)
        ans=ans*fac[i];
        cout<<ans<<endl;

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X