lodha1503

Untitled

Feb 19th, 2022 (edited)
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.10 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <stdbool.h>
  5. #define formatBool(b) ((b) ? "true" : "false")
  6.  
  7. void Multiplication(int P[],int Q[],int size)
  8. {
  9.     if (size==1)
  10.     {
  11.         int A=0,B=0,C=0;
  12.         A=P[0]*Q[0];
  13.         B=0;
  14.         C=0;
  15.         int arr[]={A,B,C};
  16.         return arr;
  17.     }
  18.     else if (size==2)
  19.     {
  20.         int A=0;
  21.         int B=0;
  22.         int C=0;
  23.         A=P[0]*Q[0];
  24.         C=P[1]*Q[1];
  25.         B=(P[0]+P[1])*(Q[0]*Q[1])-A-C;
  26.         int arr[]={A,B,C};
  27.         return arr;
  28.     }
  29.     else
  30.     {
  31.         int X;
  32.         X=int (size/2);
  33.  
  34.         int P1[X];
  35.         int P2[N+1-X];
  36.         int Q1[X];
  37.         int Q2[N+1-X];
  38.        
  39.  
  40.         for(int i=0;i<X;i++)
  41.         {
  42.             P1[i]=P[i];
  43.             Q1[i]=P[i];
  44.         }
  45.         for(int i=0;i<N+1-X;i++)
  46.         {
  47.             P2[i]=P[i+X];
  48.             Q2[i]=P[i+X];
  49.         }
  50.  
  51.         int P3[X];
  52.         int Q3[X];
  53.  
  54.         for(int i=0;i<N+1-X;i++)
  55.         {
  56.             P3[i]=P1[i]+P2[i];
  57.             Q3[i]=Q1[i]+Q2[i];
  58.         }
  59.  
  60.         int A_X[2*(X-1)+1];
  61.         int B_X[2*(X-1)+1];
  62.         int C_X[2*(X-1)+1];
  63.  
  64.         A_X=multiplication(P1,Q1,2*(X-1)+1);
  65.        
  66.         B_X=multiplication(P3,Q3,X);
  67.         for(int i=0;i<X;i++)
  68.         {
  69.             B_X[i]=B_X[i]-A_X[i]-C_X[i];
  70.         }
  71.  
  72.         C_X=multiplication(P2,Q2,2*(X-1)+1);
  73.  
  74.         int ans[2*size+1];
  75.         for(int i=0;i<X;i++)
  76.         {
  77.             ans[i]=A_X[i];
  78.         }
  79.         for(int i=X-1;i<B_X.size();i++)
  80.         {
  81.             ans[i]=B_X[i-X-1];
  82.         }
  83.         for(int i=B_X.size()-1;i<C_X.size();i++)
  84.         {
  85.             ans[i]=B_X[i-B_X.size()-1];
  86.         }
  87.         return ans;
  88.     }
  89.  
  90. }
  91.  
  92.  
  93.  
  94. int main()
  95. {
  96.     int N;
  97.     scanf("%d",&N);
  98.     int P[N+1];
  99.     int Q[N+1];
  100.    
  101.  
  102.     for (int i=0;i<N+1;i++)
  103.     {
  104.         int e_P;
  105.         scanf("%d",&e_P);
  106.         P[i]=e_P;
  107.     }
  108.     for (int i=0;i<N+1;i++)
  109.     {
  110.         int e_Q;
  111.         scanf("%d",&e_Q);
  112.         Q[i]=e_Q;
  113.     }
  114.     Multiplication(P,Q,N+1);
  115.  
  116.  
  117.  
  118.    
  119.     return 0;
  120. }
Add Comment
Please, Sign In to add comment