高精度乘法

高精度加法

#include <bits/stdc++.h>
using namespace std;
string s1,s2;
int main()
{
    string s1,s2;
    cin>>s1>>s2;
    int i,j;
    int a[20050],b[20050];
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    int l1=s1.length(),l2=s2.length();
    for(i=0; i<l1; i++)
    {
        a[l1-1-i]=s1[i]-'0';
    }
    for(i=0; i<l2; i++)
    {
        b[l2-i-1]=s2[i]-'0';
    }
    int c[50050];
    memset(c,0,sizeof(c));
    for(i=0; i<l1; i++)
    {
        for(j=0; j<l2; j++)
        {
            c[i+j]+=a[i]*b[j];
            c[i+j+1]+=c[i+j]/10;
            c[i+j]%=10;
        }
    }
    int l=l1+l2,f=1;
    while(c[l-1]==0&&l>1)
    {
        l--;
    }
    for(i=l-1; i>=0; i--)
    {
        printf("%d",c[i]);
    }
}
原文地址:https://www.cnblogs.com/jackwang-sparrow/p/13332780.html