Ver Mensaje Individual
  #3 (permalink)  
Antiguo 15/03/2007, 14:53
rodri17
 
Fecha de Ingreso: marzo-2007
Mensajes: 2
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: ayuda por favor

He intentado dividir los polinomios en 2, llamar recursivamente para multiplicar esas dos partes, y despues sumarlas y volver a llamar recursivamente para multiplicar el resultado. Es el mismo metodo que se usa para multiplicar enteros largos usando divide y venceras.
Aqui les dejo el codigo:

int* MultiPoli(int* p, int n, int* q, int m){

int* P;
int* Y;
int* Pi;
int* Pd;
int* Qi;
int* Qd;
int* U;
int* Z;

int* Sp;
int* Sq;
int* f;

int* j;
int x=0;
int y=0;
int i,N,M;



if (m==1)
return (int *)(p[0]*q[0]);
else {

for(i=0;i<=((n/2)-1);i++){ //Parte IzquieZa de P
Pi[i]=p[i];
}


for(i=n/2;i<n;i++){ //Parte Derecha de P
Pd[i]=p[i];
}

for(i=0;i<=((m/2)-1);i++){ //Parte IzquieZa de Q
Qi[i]=q[i];
}

for(i=m/2;i<m;i++){ //Parte Derecha de Q
Qd[i]=q[i];
}

U=MultiPoli(Pi,n/2,Qi,m/2); //Llamada recursiva
Z=MultiPoli(Pd,n/2,Qd,m/2); //Llamada recursiva

for(i=0;i<=((n/2)-1);i++){ // Pi+Pd
Sp[i]=Pi[i]+Pd[i];
}

for(i=0;i<=((m/2)-1);i++){ // Qi+Qd
Sq[i]=Qi[i]+Qd[i];
}

Y=MultiPoli(Sp,n/2,Sq,m/2); //Llamada recursiva

for (i=0;i<=((n/2)-1);i++){ // Y-U-Z
f[i]=Y[i]-U[i]-Z[i];
}

for(i=0;i<2*n;i++){ // Calculo la solucion
j[i]=U[i]+f[i]+Z[i];
}

return j;

}//Fin else
}//Fin metodo

Gracias.