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 size)
- {
- if (size==1)
- {
- int A=0,B=0,C=0;
- A=P[0]*Q[0];
- B=0;
- C=0;
- int arr[]={A,B,C};
- return arr;
- }
- else if (size==2)
- {
- int A=0;
- int B=0;
- int C=0;
- 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};
- return arr;
- }
- else
- {
- int X;
- X=int (size/2);
- int P1[X];
- int P2[N+1-X];
- int Q1[X];
- int Q2[N+1-X];
- for(int i=0;i<X;i++)
- {
- P1[i]=P[i];
- Q1[i]=P[i];
- }
- for(int i=0;i<N+1-X;i++)
- {
- P2[i]=P[i+X];
- Q2[i]=P[i+X];
- }
- int P3[X];
- int Q3[X];
- for(int i=0;i<N+1-X;i++)
- {
- P3[i]=P1[i]+P2[i];
- Q3[i]=Q1[i]+Q2[i];
- }
- int A_X[2*(X-1)+1];
- int B_X[2*(X-1)+1];
- int C_X[2*(X-1)+1];
- A_X=multiplication(P1,Q1,2*(X-1)+1);
- B_X=multiplication(P3,Q3,X);
- for(int i=0;i<X;i++)
- {
- B_X[i]=B_X[i]-A_X[i]-C_X[i];
- }
- C_X=multiplication(P2,Q2,2*(X-1)+1);
- int ans[2*size+1];
- for(int i=0;i<X;i++)
- {
- ans[i]=A_X[i];
- }
- for(int i=X-1;i<B_X.size();i++)
- {
- ans[i]=B_X[i-X-1];
- }
- for(int i=B_X.size()-1;i<C_X.size();i++)
- {
- ans[i]=B_X[i-B_X.size()-1];
- }
- return ans;
- }
- }
- int main()
- {
- int N;
- scanf("%d",&N);
- int P[N+1];
- int Q[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,N+1);
- return 0;
- }
Add Comment
Please, Sign In to add comment