Red de conocimiento informático - Material del sitio web - ¿Cómo encontrar el factorial de 10000 usando lenguaje C? ¿Puede algún experto darme algunas ideas?

¿Cómo encontrar el factorial de 10000 usando lenguaje C? ¿Puede algún experto darme algunas ideas?

#include "stdio.h"

#include "string.h"

#includelt;stdlib.hgt;

int main()

{

char n[10];

int a[20000]={0}, b[20000]={0}, c[20000]={0}, temp

int i, j, k, len

printf("Ingrese el número factorial: ");

scanf("s",amp; n);

/*Lo siguiente utiliza b como multiplicador y a como multiplicando (aumentando de 1 a n en secuencia)*/

temp=atoi(n);/*round*/

b[0]=1;/*inicializar b, comenzar factorial desde 1*/

len=1 ;/*Inicializa la longitud de b*/

for(i=1;ilt;=temp;i)/*multiplica el factorial de menor a mayor*/

{

sprintf(n, "d", i); /*Convierte el término factorial en una cadena*/

for(j=strlen(n)-1;jgt;=0 ;j --)/*Almacenamiento inverso de términos factoriales (cadena)*/

a[strlen(n)-1-j]=n[j]-'0'; debe convertirse en un número entero Multiplicar */

for(j=0;jlt;len;j)/*Obtener todos los bits de b*/

for(k=0. ;klt;strlen( n);k)/*Obtener cada dígito del término factorial*/

{

c[j k] =b[j]*a[k] ;/*Usa c Para almacenar el resultado de cada multiplicación de dígitos*/

c[j 1 k] =c[j k]/10 /*Si c[j k] no es menor que 10, el la parte mayor que 10 se enviará al bit alto*/

c[j k]=10;/*Después de ser enviada al bit alto, c[j k] debe realizar la operación restante correspondiente. Conserve solo la parte restante*/ }

if(c[j k-1]!=0)/*Juzgue la longitud de los dígitos del nuevo número b*/

len= j k ;

else

len=j k-1;

for(j=0;jlt;len;j)/*Actualizar b*/

b[j]=c[j];

memset(c, 0, sizeof(c)); /*Restablecer c a cero*/

}

for(i=len-1;igt;=0;i--)/*resultado de salida inversa*/

printf("d",b[i]) ;

printf("\n");

devuelve 0;

}