Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <stdbool.h>
- #define formatBool(b) ((b) ? "true" : "false")
- void Multiplication(int *P,int* Q,int *R,int size)
- {
- if (size==1)
- {
- int A=0,B=0,C=0;
- A=P[0]*Q[0];
- B=0;
- C=0;
- int arr[3]={A,B,C};
- for(int i=0;i<3;i++)
- {
- R[i]=arr[i];
- }
- return ;
- }
- else if (size==2)
- {
- int A=0;
- int B=0;
- int C=0;
- printf("\n");
- printf("P[0] is %d\n",P[0]);
- printf("Q[0] is %d\n",Q[0]);
- printf("P[1] is %d\n",P[1]);
- printf("Q[1] is %d\n",Q[1]);
- printf("\n");
- A=P[0]*Q[0];
- C=P[1]*Q[1];
- B=(P[0]+P[1])*(Q[0]+Q[1])-A-C;
- int arr[]={A,B,C};
- for(int i=0;i<3;i++)
- {
- R[i]=arr[i];
- }
- return;
- }
- else
- {
- int X1;
- X1=size/2;
- int X2;
- X2=size-X1;
- int P1[X1];
- int P2[X2];
- int Q1[X1];
- int Q2[X2];
- for(int i=0;i<X1;i++)
- {
- P1[i]=P[i];
- Q1[i]=Q[i];
- }
- for(int i=0;i<X2;i++)
- {
- P2[i]=P[i+X1];
- Q2[i]=Q[i+X1];
- }
- int P3[X2];
- int Q3[X2];
- for(int i=0;i<X2;i++)
- {
- if (i<X1)
- {
- P3[i]=P1[i]+P2[i];
- Q3[i]=Q1[i]+Q2[i];
- }
- else
- {
- P3[i]=P2[i];
- Q3[i]=Q2[i];
- }
- }
- printf("\n");
- printf("P1 is ");
- for (int i=0;i<X1;i++)
- {
- printf("%d ",P1[i]);
- }
- printf("\n");
- printf("Q1 is ");
- for (int i=0;i<X1;i++)
- {
- printf("%d ",Q1[i]);
- }
- printf("\n");
- printf("P2 is ");
- for (int i=0;i<X2;i++)
- {
- printf("%d ",P2[i]);
- }
- printf("\n");
- printf("Q2 is ");
- for (int i=0;i<X2;i++)
- {
- printf("%d ",Q2[i]);
- }
- printf("\n");
- printf("P3 is ");
- for (int i=0;i<X2;i++)
- {
- printf("%d ",P3[i]);
- }
- printf("\n");
- printf("Q3 is ");
- for (int i=0;i<X2;i++)
- {
- printf("%d ",Q3[i]);
- }
- printf("\n");
- printf("\n");
- int A_X[2*X1 - 1];
- int B_X[2*X2 - 1];
- int C_X[2*X2 - 1];
- // int* a_x=A_X;
- // int* b_x=B_X;
- // int* c_x=C_X;
- Multiplication(P1,Q1,A_X,X1);
- Multiplication(P2,Q2,C_X,X2);
- Multiplication(P3,Q3,B_X,X2);
- printf("\n");
- printf("B_X is ");
- for (int i=0;i<2*X2-1;i++)
- {
- printf("%d ",B_X[i]);
- }
- printf("\n");
- printf("\n");
- printf("\n");
- for(int i=0;i<2*X2-1;i++)
- {
- if (i<2*X1-1)
- {
- B_X[i]=B_X[i]-A_X[i]-C_X[i];
- }
- else
- {
- B_X[i]=B_X[i]-C_X[i];
- }
- }
- printf("A_X is ");
- for (int i=0;i<2*X1-1;i++)
- {
- printf("%d ",A_X[i]);
- }
- printf("\n");
- printf("B_X is ");
- for (int i=0;i<2*X2-1;i++)
- {
- printf("%d ",B_X[i]);
- }
- printf("\n");
- printf("C_X is ");
- for (int i=0;i<2*X2-1;i++)
- {
- printf("%d ",C_X[i]);
- }
- printf("\n");
- printf("\n");
- for(int i=0;i<2*X1-1;i++)
- {
- printf("%d\n",i);
- R[i]=A_X[i];
- printf("R[i] is %d\n",R[i]);
- }
- for(int i=X1;i<=X1+2*(X2-1);i++)
- {
- printf("%d\n",i);
- if (i<2*X1-1)
- {
- R[i]=R[i]+B_X[i-X1];
- }
- else
- {
- R[i]=B_X[i-X1];
- }
- printf("R[i] is %d\n",R[i]);
- }
- printf("hi\n");
- for(int i=(X1)*2;i<=(X1*2)+2*(X2-1);i++)
- {
- printf("%d\n",i);
- if (i<=X1+2*(X2-1))
- {
- R[i]=R[i]+C_X[i-(X1*2)];
- }
- else
- {
- R[i]=C_X[i-(X1*2)];
- }
- printf("R[i] is %d\n",R[i]);
- }
- return ;
- }
- }
- int main()
- {
- int N;
- scanf("%d",&N);
- int P[N+1];
- int Q[N+1];
- int R[2*N+1];
- for (int i=0;i<N+1;i++)
- {
- int e_P;
- scanf("%d",&e_P);
- P[i]=e_P;
- }
- for (int i=0;i<N+1;i++)
- {
- int e_Q;
- scanf("%d",&e_Q);
- Q[i]=e_Q;
- }
- Multiplication(P,Q,R,N+1);
- for (int i=0;i<2*N+1;i++)
- {
- printf("%d ",R[i]);
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment