Advertisement
silentkiler029

multiply two string

Jul 3rd, 2020
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.36 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main()
  5. {
  6.     char n1[] = "123";
  7.     char n2[] = "56";
  8.  
  9.     int len1 = strlen(n1);
  10.     int len2 = strlen(n2);
  11.     int n, i;
  12.  
  13.     if(len1 > len2) n = len1;
  14.     else n = len2;
  15.  
  16.     char num1[n], num2[n];
  17.  
  18.     for(i = 0; i < n - len1; i++) {
  19.         num1[i] = '0';
  20.     }
  21.  
  22.     for(int j = 0; j < n; i++, j++) {
  23.         num1[i] = n1[j];
  24.     }
  25.  
  26.     for(i = 0; i < n - len2; i++) {
  27.         num2[i] = '0';
  28.     }
  29.     //i = 1
  30.     for(int j = 0; i < n; i++, j++) {
  31.         num2[i] = n2[j];
  32.     }
  33.  
  34.  
  35.  
  36.     char pro[2 * n + 1];
  37.  
  38.     int j, k;
  39.     for(i = 0; i < 2 * n + 1; i++) {
  40.         pro[i] = '0';
  41.     }
  42.     pro[2 * n] = '\0';
  43.  
  44.     // num1 - i && num2 - j  && pro - k
  45.  
  46.     int p, carry = 0, counter = -1;
  47.  
  48.     for(j = n - 1; j >= 0; j--) {
  49.         carry = 0;
  50.         counter++;
  51.         k = 2 * n - 1 - counter;
  52.         for(i = n - 1; i >= 0; i--) {
  53.             p = pro[k] - '0' + (num1[i] - '0') * (num2[j] - '0') + carry;
  54.             carry = p / 10;
  55.             pro[k] = (p % 10) + '0';
  56.             k--;
  57.         }
  58.         pro[k] = carry + '0';
  59.     }
  60.  
  61.     //printf("ans = %s\n", pro);
  62.  
  63.     for(i = 0; i < 2 * n; i++) {
  64.         if(pro[i] != '0') {
  65.             for(j = i; j < 2 * n; j++) {
  66.                 printf("%c", pro[j]);
  67.             }
  68.             break;
  69.         }
  70.     }
  71.  
  72.     return 0;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement