rafi1590

BIg multiply

Apr 19th, 2020
22
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.64 KB | None | 0 0
  1. #include<iostream>
  2. #include<cmath>
  3.  
  4.  
  5. using namespace std;
  6.  
  7. int strlen(char str1[]){
  8. int i = 0;
  9. while(str1[i] != '\0')
  10. i++;
  11. return i;
  12. }
  13. void strTOnum(char str[],int num[]){
  14. int len = strlen(str);
  15. int index = len - 1;
  16. int i = 0;
  17. while(index>=0){
  18. num[i] = str[index] - '0';
  19. i++;
  20. index--;
  21. }
  22. }
  23.  
  24. char str1[500];
  25. char str2[500];
  26.  
  27.  
  28. int main(){
  29.  
  30. while(cin >> str1 && cin >> str2){
  31. if(str1[0] == '0' || str2[0] == '0'){
  32. cout << '0' <<'\n';
  33. continue;
  34. }
  35.  
  36. int num1[500] = {0};
  37. int num2[500] = {0};
  38. int mul[1000] = {0};
  39.  
  40.  
  41. strTOnum(str1,num1);
  42. strTOnum(str2,num2);
  43.  
  44.  
  45. int index = 0;
  46. int carry = 0;
  47.  
  48.  
  49. int len1 = strlen(str1);
  50. int len2 = strlen(str2);
  51.  
  52. if(len1>=len2){
  53.  
  54. for(int i=0;i<len2;i++){
  55. for(int j =0,k=i;j<len1;j++,k++){
  56.  
  57. int m = (num2[i] * num1[j])+carry;
  58. carry = 0;
  59. mul[k] += m % 10;
  60. carry = m / 10;
  61.  
  62. index = k;
  63.  
  64. }
  65. }
  66.  
  67.  
  68.  
  69.  
  70. for(int i=0;i<=index;i++){
  71. if(mul[i]>9){
  72. int temp = mul[i];
  73. mul[i] = temp%10;
  74. mul[i+1] += temp/10;
  75. if(i+1==index+1){
  76. index++;
  77. break;
  78. }
  79. }
  80.  
  81. }
  82.  
  83. for(int i=index;i>=0;i--){
  84. cout << mul[i];
  85.  
  86. }
  87. cout << '\n';
  88.  
  89.  
  90. }
  91.  
  92. else{
  93.  
  94. for(int i=0;i<len1;i++){
  95. for(int j =0,k=i;j<len2;j++,k++){
  96.  
  97. int m = (num1[i] * num2[j])+carry;
  98. carry = 0;
  99. mul[k] += m % 10;
  100. carry = m / 10;
  101.  
  102. index = k;
  103.  
  104. }
  105. }
  106.  
  107.  
  108.  
  109.  
  110. for(int i=0;i<=index;i++){
  111. if(mul[i]>9){
  112. int temp = mul[i];
  113. mul[i] = temp%10;
  114. mul[i+1] += temp/10;
  115. if(i+1==index+1){
  116. index++;
  117. break;
  118. }
  119. }
  120.  
  121. }
  122.  
  123. for(int i=index;i>=0;i--){
  124. cout << mul[i];
  125.  
  126. }
  127. cout << '\n';
  128.  
  129. }
  130.  
  131. }
  132.  
  133.  
  134. return 0;
  135.  
  136.  
  137. return 0;
  138. }
Advertisement
Add Comment
Please, Sign In to add comment