Advertisement
Guest User

Untitled

a guest
Mar 30th, 2020
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.89 KB | None | 0 0
  1. #include<iostream>
  2. #include<math.h>
  3.  
  4. using namespace std;
  5.  
  6. int nr_digits(long int nr)
  7. {
  8. int count=0;
  9. while(nr!=0)
  10. {
  11. count++;
  12. nr=nr/10;
  13. }
  14. return count;
  15. }
  16.  
  17. int min(int x, int y)
  18. {
  19. if(x>y)
  20. {
  21. return y;
  22. }
  23. else
  24. {
  25. return x;
  26. }
  27. }
  28.  
  29. long int multiply(long int x, long int y)
  30. {
  31. if(x>9 && y>9)
  32. {
  33. int len_x = nr_digits(x);
  34. int len_y = nr_digits(y);
  35.  
  36. int len = min(x,y);
  37. int m = len/2;
  38.  
  39. long int xs = x/(long int)pow(10,m);
  40. long int xd = x%(long int)pow(10,m);
  41.  
  42. long int ys = y/(long int)pow(10,m);
  43. long int yd = y%(long int)pow(10,m);
  44.  
  45. long int p1 = multiply(xs,ys);
  46. long int p2 = multiply(xd,yd);
  47. long int p3 = multiply(xs,yd);
  48. long int p4 = multiply(xd,ys);
  49.  
  50. return (p1 * (long int)pow(10,2*m) + p2 +(p3 + p4) * pow(10,m));
  51. }
  52. else
  53. {
  54. return x*y;
  55. }
  56. }
  57.  
  58. int main(void)
  59. {
  60. cout<<multiply(12,22) <<"\n";
  61.  
  62. return 0;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement