Advertisement
juanjo12x

Lab2_Algoritmia_P9_Multiplication_LI

Apr 14th, 2014
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.17 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<math.h>
  4. long prod(long,long);
  5. long noOfDigit(long,long);
  6. void main()
  7. {
  8.  long m,n;
  9.  
  10.  printf("\n-----------------------------------------------");
  11.  printf("\nMULTIPLICATION USING DIVIDE & CONQUER");
  12.  printf("\n-----------------------------------------------");
  13.  printf("\n Enter number1:");
  14.  scanf("%ld",&m);
  15.  printf("\n Enter number2:");
  16.  scanf("%ld",&n);
  17.  printf("\n-----------------------------------------------");
  18.  printf("\n multiplication of %ld and %ld is:%ld",m,n,prod(m,n));
  19.  printf("\n-----------------------------------------------");
  20. getch();
  21. }
  22.  
  23. long prod(long u,long v)
  24. {
  25.  long x,y,w,z;
  26.  long n,m,p,q,r;
  27.  
  28.  n=noOfDigit(u,v);
  29.  
  30.  if(u==0 || v==0)
  31.  {
  32.   return 0;
  33.  }
  34.  
  35.  
  36.  else if(n<=2)
  37.  {
  38.   return (u*v);
  39.  }
  40.  else
  41.  {
  42.   m=floor(n/2);
  43.  
  44.   w=u/pow(10,m);
  45.   x=u%(int)pow(10,m);
  46.   y=v/pow(10,m);
  47.   z=v%(int)pow(10,m);
  48.  
  49.   p=prod(w,y);
  50.   q=prod(x,z);
  51.   r=prod(w+x,y+z);
  52.  
  53.   return p * pow(10,2*m) + (r-p-q) * pow(10,m) + q;
  54.  }
  55. }
  56.  
  57.  
  58. long noOfDigit(long m,long n)
  59. {
  60.  long max;
  61.  int b=0;
  62.  if(m>=n)
  63.   max=m;
  64.  else
  65.   max=n;
  66.  while(max>0)
  67.  {
  68.   max=max/10;
  69.   b++;
  70.  }
  71.  return b;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement