El producto de dos valores enteros en lenguaje C
Entrada de multiplicación de alta precisión: dos líneas, cada línea representa un número entero no negativo (no más de 10,000 dígitos).
Salida: producto de dos números.
*/
# incluir & ltstdio.h & gt
# incluir & ltstring.h & gt
# incluir & ltstdlib .h & gt
#Definir el valor máximo 10001
int bigchenfa(int *sum, int *a, int *b, int la, int lb)? /*Multiplicación de alta precisión*/
{
int i, j, lsum = 0;
memset(sum, 0, sizeof(sum))
for(I = 1; I & lt= laI++) /*Usar matrices para operaciones de simulación*/
for(j=1, lsum = I-1; j &; lt = lbj++)
suma[++ lsum]+= b[j]* a[I];
for(I = 1; I<= lsumI++)/*carry Procesamiento */
if(suma[I]& gt;= 10)
{
if(suma[lsum]& gt;= 10) p>
lsum++;
suma[I+1]+= suma[I]/10;
suma[I]% = 10;
}
Devuelve lsum/*Devuelve el número de dígitos del producto*/
}
int main(void)
{
int a[MAX]={0}, b[MAX]={0}, suma[MAX * 2]= { 0 };
int la=0, lb= 0, lsum = 0;
int i, j;
char sa[MAX], sb[MAX]; %s ", sa, sb);
printf("%s * %s = ", sa, sb);
la = strlen(sa);
lb = strlen(sb);
for(i=1,j=la-1;i<= lai++,j-)
a[I]= sa[ j]-' 0 ';
for(i=1, j = l b-1; i<= lbi++, j-)
b[I]= sb[ j] -' 0 ';
lsum = bigchenfa(sum,a,b,la,lb);
for(I = lsum;i>0;i-)
printf("%d ",suma[I]);
printf("\n");
Sistema("pausa");
p>
Devuelve 0;
}