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]); p>
}
printf("\n");
}
int?main()?{
factorial(1000);
}