Red de conocimiento informático - Descarga de software - Escribir un programa en C++ para realizar el factorial de cualquier número hasta 10,000

Escribir un programa en C++ para realizar el factorial de cualquier número hasta 10,000

Referencia principal

/questions/11446973/find-factorial-of-large-numbers-in-java

#include?

//?Multiplicación de matriz,?res_size:?Indica cuántos dígitos hay,?El número de dígitos devueltos en el resultado

int?multiply(int?x,?int? res[], ?int?res_size)?{

int?carry?=?0;?//?carry

for?(int?i=0;?i< res_size;?i++ )?{

int?prod?=?res[i]?*?x?+?carry;

res[i]?=?prod?% ?10;

¿llevar?=?prod/10;

}

¿mientras?(¡llevar!=0)?{

res[res_size] ?=?carry%10;

carry?=?carry/10;

res_size++;

}

return?res_size;

}

void?factorial(int?n)?{

int?res[36000];?/?/?10000!? El número de dígitos no supera los 36000

//?Inicialización

res[0]?=?1;

int?res_size?=?1; ?//?Indica cuántos bits

//?Calcular?n!

para?(int?x=2;?x<=n;?x++)?{

res_size ?=?multiply(x,?res,?res_size);

}

printf("%d?!=?\n",? n);

for?(int?i=res_size-1;?i>=0;?i--)?{

printf("%d",?res [i]);

}

printf("\n");

}

int?main()?{

factorial(1000);

}