lodha1503

Untitled

Feb 19th, 2022 (edited)
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.21 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 *R,int size)
  8. {
  9.    
  10.     if (size==1)
  11.     {
  12.        
  13.         int A=0,B=0,C=0;
  14.         A=P[0]*Q[0];
  15.         B=0;
  16.         C=0;
  17.         int arr[3]={A,B,C};
  18.         for(int i=0;i<3;i++)
  19.         {
  20.            
  21.             R[i]=arr[i];
  22.            
  23.         }
  24.  
  25.         return ;
  26.        
  27.        
  28.     }
  29.  
  30.     else if (size==2)
  31.     {
  32.         int A=0;
  33.         int B=0;
  34.         int C=0;
  35.  
  36.         printf("\n");
  37.         printf("P[0] is %d\n",P[0]);
  38.         printf("Q[0] is %d\n",Q[0]);
  39.         printf("P[1] is %d\n",P[1]);
  40.         printf("Q[1] is %d\n",Q[1]);
  41.         printf("\n");
  42.  
  43.         A=P[0]*Q[0];
  44.         C=P[1]*Q[1];
  45.         B=(P[0]+P[1])*(Q[0]+Q[1])-A-C;
  46.        
  47.  
  48.        
  49.  
  50.  
  51.         int arr[]={A,B,C};
  52.         for(int i=0;i<3;i++)
  53.         {
  54.             R[i]=arr[i];
  55.         }
  56.         return;
  57.     }
  58.  
  59.     else
  60.     {
  61.         int X1;
  62.         X1=size/2;
  63.         int X2;
  64.         X2=size-X1;
  65.         int P1[X1];
  66.         int P2[X2];
  67.         int Q1[X1];
  68.         int Q2[X2];
  69.        
  70.  
  71.         for(int i=0;i<X1;i++)
  72.         {
  73.             P1[i]=P[i];
  74.             Q1[i]=Q[i];
  75.         }
  76.         for(int i=0;i<X2;i++)
  77.         {
  78.             P2[i]=P[i+X1];
  79.             Q2[i]=Q[i+X1];
  80.         }
  81.  
  82.         int P3[X2];
  83.         int Q3[X2];
  84.  
  85.         for(int i=0;i<X2;i++)
  86.         {
  87.             if (i<X1)
  88.             {
  89.                 P3[i]=P1[i]+P2[i];
  90.                 Q3[i]=Q1[i]+Q2[i];
  91.             }
  92.             else
  93.             {
  94.                 P3[i]=P2[i];
  95.                 Q3[i]=Q2[i];
  96.             }  
  97.         }
  98.  
  99.         printf("\n");
  100.  
  101.         printf("P1 is ");
  102.         for (int i=0;i<X1;i++)
  103.         {
  104.             printf("%d ",P1[i]);
  105.         }
  106.         printf("\n");
  107.  
  108.         printf("Q1 is ");
  109.         for (int i=0;i<X1;i++)
  110.         {
  111.             printf("%d ",Q1[i]);
  112.         }
  113.         printf("\n");
  114.  
  115.         printf("P2 is ");
  116.         for (int i=0;i<X2;i++)
  117.         {
  118.             printf("%d ",P2[i]);
  119.         }
  120.         printf("\n");
  121.  
  122.         printf("Q2 is ");
  123.         for (int i=0;i<X2;i++)
  124.         {
  125.             printf("%d ",Q2[i]);
  126.         }
  127.         printf("\n");
  128.  
  129.         printf("P3 is ");
  130.         for (int i=0;i<X2;i++)
  131.         {
  132.             printf("%d ",P3[i]);
  133.         }
  134.         printf("\n");
  135.  
  136.         printf("Q3 is ");
  137.         for (int i=0;i<X2;i++)
  138.         {
  139.             printf("%d ",Q3[i]);
  140.         }
  141.         printf("\n");
  142.  
  143.         printf("\n");
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.         int A_X[2*X1 - 1];
  154.         int B_X[2*X2 - 1];
  155.         int C_X[2*X2 - 1];
  156.         // int* a_x=A_X;
  157.         // int* b_x=B_X;
  158.         // int* c_x=C_X;
  159.  
  160.         Multiplication(P1,Q1,A_X,X1);
  161.         Multiplication(P2,Q2,C_X,X2);
  162.         Multiplication(P3,Q3,B_X,X2);
  163.        
  164.         printf("\n");
  165.         printf("B_X is ");
  166.         for (int i=0;i<2*X2-1;i++)
  167.         {
  168.             printf("%d ",B_X[i]);
  169.         }
  170.         printf("\n");
  171.  
  172.  
  173.         printf("\n");
  174.         printf("\n");
  175.         for(int i=0;i<2*X2-1;i++)
  176.         {
  177.             if (i<2*X1-1)
  178.             {
  179.                 B_X[i]=B_X[i]-A_X[i]-C_X[i];
  180.             }
  181.             else
  182.             {
  183.                 B_X[i]=B_X[i]-C_X[i];
  184.             }
  185.            
  186.         }
  187.  
  188.  
  189.  
  190.         printf("A_X is ");
  191.         for (int i=0;i<2*X1-1;i++)
  192.         {
  193.             printf("%d ",A_X[i]);
  194.         }
  195.         printf("\n");
  196.  
  197.         printf("B_X is ");
  198.         for (int i=0;i<2*X2-1;i++)
  199.         {
  200.             printf("%d ",B_X[i]);
  201.         }
  202.         printf("\n");
  203.  
  204.         printf("C_X is ");
  205.         for (int i=0;i<2*X2-1;i++)
  206.         {
  207.             printf("%d ",C_X[i]);
  208.         }
  209.         printf("\n");
  210.         printf("\n");
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.        
  218.         for(int i=0;i<2*X1-1;i++)
  219.         {
  220.             printf("%d\n",i);
  221.             R[i]=A_X[i];
  222.             printf("R[i] is %d\n",R[i]);
  223.            
  224.         }
  225.         for(int i=X1;i<=X1+2*(X2-1);i++)
  226.         {
  227.             printf("%d\n",i);
  228.             if (i<2*X1-1)
  229.             {
  230.                 R[i]=R[i]+B_X[i-X1];
  231.             }
  232.             else
  233.             {
  234.                 R[i]=B_X[i-X1];
  235.             }
  236.            
  237.             printf("R[i] is %d\n",R[i]);
  238.         }
  239.         printf("hi\n");
  240.         for(int i=(X1)*2;i<=(X1*2)+2*(X2-1);i++)
  241.         {
  242.  
  243.             printf("%d\n",i);
  244.             if (i<=X1+2*(X2-1))
  245.             {
  246.                 R[i]=R[i]+C_X[i-(X1*2)];
  247.             }
  248.             else
  249.             {
  250.                 R[i]=C_X[i-(X1*2)];
  251.             }
  252.            
  253.             printf("R[i] is %d\n",R[i]);
  254.         }
  255.        
  256.         return ;
  257.     }    
  258.  
  259.  
  260. }
  261.  
  262.  
  263. int main()
  264. {
  265.     int N;
  266.     scanf("%d",&N);
  267.     int P[N+1];
  268.     int Q[N+1];
  269.     int R[2*N+1];
  270.    
  271.    
  272.  
  273.     for (int i=0;i<N+1;i++)
  274.     {
  275.         int e_P;
  276.         scanf("%d",&e_P);
  277.         P[i]=e_P;
  278.     }
  279.     for (int i=0;i<N+1;i++)
  280.     {
  281.         int e_Q;
  282.         scanf("%d",&e_Q);
  283.         Q[i]=e_Q;
  284.     }
  285.  
  286.    
  287.    
  288.     Multiplication(P,Q,R,N+1);
  289.  
  290.     for (int i=0;i<2*N+1;i++)
  291.     {
  292.         printf("%d ",R[i]);
  293.     }
  294.    
  295.    
  296.    
  297.  
  298.  
  299.    
  300.     return 0;
  301. }
Add Comment
Please, Sign In to add comment