spider68

multiply two large number

Apr 1st, 2020
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.78 KB | None | 0 0
  1. string multiplyStrings(string s1, string s2) {
  2.    int i,j,m,n,x=1;
  3.    if(s1[0]=='-'){x*=(-1); s1.erase(s1.begin());}
  4.    if(s2[0]=='-'){x*=(-1); s2.erase(s2.begin());}
  5.    if(s1.length()==0||s2.length()==0)return "0";
  6.    m=s1.length();
  7.    n=s2.length();
  8.    vector<int>a(m+n,0);
  9.    int k1=0;
  10.    for(i=m-1;i>=0;i--)
  11.    {
  12.        int c=0,k2=0;
  13.        for(j=n-1;j>=0;j--)
  14.        {
  15.            int num=(s1[i]-'0')*(s2[j]-'0');
  16.            int sum=num+c+a[k1+k2];
  17.            c=sum/10;
  18.            a[k1+k2]=sum%10;
  19.            k2++;
  20.        }
  21.        a[k1+k2]+=c;
  22.        k1++;
  23.    }
  24.    i=a.size()-1;
  25.    while(i>=0&&a[i]==0)i--;
  26.    if(i==-1)return "0";
  27.    string s="";
  28.    while(i>=0)
  29.    {
  30.        s+=to_string(a[i]);
  31.        i--;
  32.    }
  33.    if(x==-1)s.insert(s.begin(),'-');
  34.    return s;
  35. }
Add Comment
Please, Sign In to add comment