Red de conocimiento informático - Problemas con los teléfonos móviles - UVA 10106 - El producto es WA

UVA 10106 - El producto es WA

En problemas simples de multiplicación de números grandes, el error generalmente debe deberse a problemas de redondeo. Los problemas de redondeo se deben a una mala consideración. Se recomienda observar detenidamente el procesamiento de la parte de redondeo en el código. El código AC está disponible como referencia; eche un vistazo más de cerca a lo que falta en el redondeo:

#includelt;iostreamgt;

#includelt;string.hgt;

usando espacio de nombres std;

void ma(char*, char*);

char a[1200], b[1200]

int c[2300]. ] ;

int main(void)

{

while(cingt;gt;agt;gt;b)

{

p>

for(int i=0; ilt; 2300; i ) c[i]=0

ma(a, b><); p> }

return0;

}

void ma(char*x, char*y)

{

int m, n, i, j, k, temp=0;

char a[1200], b[1200];

m=strlen(x);

n=strlen(y);

for(i=0;ilt;m;i)

{

a[ i]=x[m-i -1];

}

a[m]='\0';

for(i=0; ilt; n; yo )

{

b[i]=y[n-1-i]

}

para( i=m-1; igt;=0;i--)

{

if(a[i]!='0')romper;

temp;

}

for(i=n-1;igt;=0;i--)

{

if(b[i] ! = '0')break;

temp;

}

for(i=0;ilt;m;i)

{

for(j=0;jlt;n;j)

{

c[i j] =(a[ i]-48)* (b[j]-48);

}

for(k=0;klt;n;k)

{

if(c[k i]gt;=10){c[k i 1] =c[k i]/10;c[k i]=10;}

}

}

}

for(i=2100;igt;=0;i--)

{

si(c[yo]! =0)romper;

}

for(;igt;=0;i--) coutlt;lt;c[i];

for( i=0; ilt; i ) coutlt; 0;

coutlt;

}

¿Puedo entenderlo? Al inicializar elementos de la matriz, intente escribir su propio código y trate de no utilizar la inicialización de funciones. Esto también puede causar problemas debido a diferencias en los compiladores.